Skip to content

Commit

Permalink
Merge pull request #32 from everFinance/feat/add-everid-docs
Browse files Browse the repository at this point in the history
Feat/add everid docs
  • Loading branch information
Xaber20110202 authored Nov 29, 2023
2 parents cf72e51 + 7e488d8 commit 2ea8bb3
Show file tree
Hide file tree
Showing 21 changed files with 295 additions and 96 deletions.
90 changes: 75 additions & 15 deletions docs/guide/SDK/everpay-js.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,49 @@ const everpay = new Everpay()

## 创建 Everpay 实例

### 智能账户连接

极为简单与方便。

#### 1. 使用包管理

(1)安装 [everpay-js](./everpay-js.md#安装)

<Tabs>
<TabItem value="yarn" label="yarn" default>

```bash
yarn add everpay
```

</TabItem>
<TabItem value="npm" label="npm">

```bash
npm install everpay
```

</TabItem>
</Tabs>

(2)引入 everpay-js 和 ethers 进行创建。

```js
import Everpay from 'everpay'

const account = await new Everpay().smartAccountAuth('https://app-dev.permaswap.network/permalogo.svg')
const everpay = new Everpay({
account,
isSmartAccount: true
})
```

### 以太坊钱包连接

- 创建时可选择性注入 `ethConnectedSigner``chainType` 等配置项。
- 开发者需安装并使用 [ethers.js](https://github.com/ethers-io/ethers.js) 进行创建。
- 请下载 [MetaMask](https://metamask.io/) 或 其他以太坊钱包。

#### 1. 使用包管理器

(1)安装 [everpay-js](./everpay-js.md#安装)[ethers.js](https://github.com/ethers-io/ethers.js)
Expand All @@ -90,6 +128,7 @@ npm install everpay [email protected]
</Tabs>

(2)引入 everpay-js 和 ethers 进行创建。

```js
import Everpay from 'everpay'
import { ethers } from 'ethers'
Expand All @@ -103,7 +142,9 @@ const everpay = new Everpay({
ethConnectedSigner: signer
})
```

---

#### 2. 通过 CDN 方式连接以太坊钱包

(1)创建 `index.html` 文件并引入 [everpay-js](https://www.jsdelivr.com/package/npm/everpay?nav=config)[ethers](https://www.jsdelivr.com/package/npm/ethers?nav=config&version=5.4.0) 的 CDN 链接。
Expand Down Expand Up @@ -141,14 +182,17 @@ ethRun()
```

:::info

- 确保 `钱包已连接` 并且 `连接到当前站点`
- [debug 环境配置](./everpay-js/configuration/debug.md)
- [account 配置](../dive/account-model.md) & [chainType 配置项](./everpay-js/types.md#chaintype)
- `ethConnectedSigner` 的更多创建方式,可浏览 [SDK - everpay-js - 配置项 - `ethConnectedSigner`](./everpay-js/configuration/ethConnectedSigner)
- CDN 方式创建 Everpay 实例时,需要添加 `default` : `new window.Everpay.default({})`
- 确保 `ethers CDN链接``everPay CDN链接` 优先加载完成,否则 `ethers is not defined``Everpay is not defined`
:::

---

### Arweave 钱包连接

- 创建需要注入 `arJWK`,当使用浏览器 [ArConnect](https://arconnect.io/) 钱包时,注入 `arJWK: 'use_wallet'` 即可。
Expand Down Expand Up @@ -176,6 +220,7 @@ npm install everpay
</Tabs>

(2)引入 everpay-js 进行创建。

```ts
import Everpay from 'everpay'

Expand Down Expand Up @@ -217,26 +262,33 @@ const arRun = async () => {
arRun()
</script>
```

:::info
* 确保钱包已连接并授权,[查看授权方式](./everpay-js/configuration/arJWK.md#浏览器--arconnect)[查看授权类型](https://github.com/arconnectio/ArConnect#connectpermissions-appinfo-gateway)
* [debug 环境配置](./everpay-js/configuration/debug.md)
* [chainType 配置项](./everpay-js/types#chaintype)
* `arJWK` 也支持私钥格式,可浏览 [SDK - everpay-js - 配置项 - `arJWK`](./everpay-js/configuration/arJWK) 进行配置。
* CDN 方式创建 Everpay 实例时,需要添加 `default` : `new window.Everpay.default({})`
* 确保 `everPay CDN链接` 优先加载完成,否则 `Everpay is not defined`

- 确保钱包已连接并授权,[查看授权方式](./everpay-js/configuration/arJWK.md#浏览器--arconnect)[查看授权类型](https://github.com/arconnectio/ArConnect#connectpermissions-appinfo-gateway)
- [debug 环境配置](./everpay-js/configuration/debug.md)
- [chainType 配置项](./everpay-js/types#chaintype)
- `arJWK` 也支持私钥格式,可浏览 [SDK - everpay-js - 配置项 - `arJWK`](./everpay-js/configuration/arJWK) 进行配置。
- CDN 方式创建 Everpay 实例时,需要添加 `default` : `new window.Everpay.default({})`
- 确保 `everPay CDN链接` 优先加载完成,否则 `Everpay is not defined`
:::

---

:::tip 成功啦

- 根据上面的步骤,我们已经完成了 Everpay 实例的创建了,接下来一起完成充值、转账、提现。
:::

## 充值

everPay 实例创建成功后,可通过 `deposit` 方法,将 `Arweave`, `Ethereum` 等链上资产存入 everPay。

填写充值所需要的 `token tag``amount`,调用下面的接口完成充值:
* `tag` : `token` 的唯一标识,可通过 [`info`](./everpay-js/basic-api/info.md#示例返回) 接口进行查看。
* `amount` : 数额。

- `tag` : `token` 的唯一标识,可通过 [`info`](./everpay-js/basic-api/info.md#示例返回) 接口进行查看。
- `amount` : 数额。

```js
everpay
.deposit({
Expand All @@ -252,15 +304,19 @@ everpay
- Ethereum 充值需要等待 6 个区块,Arweave 充值需要等待 15 个区块。
- everPay 支持 AR 跨链,初始化注入 `ethConnectedSigner` 则充值调用的是 WAR(ERC20),初始化注入 `arJWK` 则充值调用的是 AR(native)。
:::

---

## 转账

everPay 实例创建成功后,可通过 `transfer` 方法,对当前 `账户(account)` 已拥有的 `资产(token)` 进行 everPay 转账。

填写转账所需要的 `token tag``amount``to`,调用下面的接口完成转账:

* `tag` : `token` 的唯一标识,可通过 [`info`](./everpay-js/basic-api/info.md#示例返回) 接口进行查看。
* `amount` : 数额。
* `to` : `everPay` 的收款方地址,详情可见 [账户模型](../dive/account-model.md)
- `tag` : `token` 的唯一标识,可通过 [`info`](./everpay-js/basic-api/info.md#示例返回) 接口进行查看。
- `amount` : 数额。
- `to` : `everPay` 的收款方地址,详情可见 [账户模型](../dive/account-model.md)

```js
everpay
.transfer({
Expand All @@ -272,18 +328,22 @@ everpay
```

:::danger

- 请注意:你正在操作转账的是 everPay 网络上的资产,请不要转账到交易所地址,或合约地址,否则您的资产将无法找回!
:::

---

## 提现

everPay 实例创建成功后,可通过 `withdraw` 方法,对当前 `账户(account)` 已拥有的 `资产(token)` 进行 everPay 提现。将 everPay 中的 `资产(token)` 提到原生链地址中。

填写需要提现的 `token tag``amount``chainType``to`,调用下面的接口完成提现:

* `token tag` : 唯一标识,可通过 [`info`](./everpay-js/basic-api/info.md#示例返回) 接口进行查看。
* `amount` : 数额。
* `chainType` : [chainType 原生链](./everpay-js/types.md#chaintype)
* `to` : `everpay` 收款方地址,详情可见 [账户模型](../dive/account-model.md)
- `token tag` : 唯一标识,可通过 [`info`](./everpay-js/basic-api/info.md#示例返回) 接口进行查看。
- `amount` : 数额。
- `chainType` : [chainType 原生链](./everpay-js/types.md#chaintype)
- `to` : `everpay` 收款方地址,详情可见 [账户模型](../dive/account-model.md)

```js
everpay
Expand Down
12 changes: 10 additions & 2 deletions docs/guide/SDK/everpay-js/configuration/account.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,21 @@ sidebar_position: 3
# account

## 配置项功能

* account 为 everPay 账户地址,详情可见[`账户模型`](../../../dive/account-model.md)
* 当调用 everpay-js [`基础查询API`](../basic-api/intro) 时,此 `account` 配置项作为默认的 account 参数,传递给 基础查询API。
* 当调用 everpay-js [`操作类API`](../operation-api/intro) 、(everpay充值、转账、提现)时,此 `account` 配置项 **必须传递,并且满足如下钱包地址之一**
* 当调用 everpay-js [`操作类API`](../operation-api/intro) 、(everpay充值、转账、提现)时,此 `account` 配置项 **必须传递**
* 智能账户模型:
* 必须通过 [`smartAccountAuth`](../tool-api/smartAccountAuth.md) 获取,确保与 <https://beta.everpay.io> 登录的账户一致。
* 必须配置 [`isSmartAccount`](./isSmartAccount.md)`true`
* 区块链账户模型,必须满足如下钱包地址之一:
* 与 ethConnectedSigner 对应的 ethereum 钱包地址一致。
* 与 arJWK 对应的 arweave 钱包地址一致。

## 基础查询API 示例

### 默认查询 account 对应的基础信息

```js
const everpay = new Everpay({
debug: false, // 默认开启正式环境
Expand All @@ -26,6 +32,7 @@ everpay.balance({
```

### 查询另一个 account 对应的基础信息

```js
const everpay = new Everpay({
debug: false,
Expand All @@ -46,4 +53,5 @@ everpay.balance({
```

## 操作类API 示例
详见 [ethConnectedSigner](./ethConnectedSigner)[arJWK](./arJWK) 配置项。

详见 [ethConnectedSigner](./ethConnectedSigner)[arJWK](./arJWK) 配置项。
3 changes: 2 additions & 1 deletion docs/guide/SDK/everpay-js/configuration/chainType.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 5
sidebar_position: 6
---

# chainType
Expand Down Expand Up @@ -41,6 +41,7 @@ everpay.deposit({
console.log('ethTx', ethTx)
})
```

:::danger 私钥泄漏风险
此方式在代码中明文传递私钥,存在安全风险。
:::
13 changes: 9 additions & 4 deletions docs/guide/SDK/everpay-js/configuration/ethConnectedSigner.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
---
sidebar_position: 5
sidebar_position: 6
---

# ethConnectedSigner

## 配置项功能

此配置项用于通过 ethereum/moonbeam/moonbase 钱包,来操作 everPay `ethereum 账户模型` 的 账户,对该账户进行:
此配置项用于通过 ethereum/moonbeam/moonbase 等 evm 钱包,来操作 everPay `ethereum 账户模型` 的 账户,对该账户进行:

* 充值:使用 `ethConnectedSigner` 进行 ethereum 转账 至 everPay 多签合约地址。
* 转账:使用 `ethConnectedSigner` 进行 ethereum `personalSign` 签名,来确保该 everPay 账户的操作权限。
Expand Down Expand Up @@ -52,9 +52,14 @@ const everpay = new Everpay({
此方式在代码中明文传递私钥,存在安全风险
:::

## 与 arJWK 配置项的冲突
## isSmartAccount、arJWK 配置项的冲突

`ethConnectedSigner` 用于 ethereum 账户模型的 everPay 账户操作,而 `arJWK` 用于 arweave 账户模型的 everPay 账户操作。同一个 Everpay 实例,**只能使用一个账户模型**,但开发者可以创建 多个 Everpay 实例,来进行更复杂应用的开发。
`ethConnectedSigner` 用于 ethereum 账户模型的 everPay 账户操作,而

* `isSmartAccount` 用于标识智能账户模型
* `arJWK` 用于 arweave 账户模型的 everPay 账户操作。

同一个 Everpay 实例,**只能使用一个账户模型**,但开发者可以创建 多个 Everpay 实例,来进行更复杂应用的开发。

```js
const ethEverpay = new Everpay({
Expand Down
4 changes: 3 additions & 1 deletion docs/guide/SDK/everpay-js/configuration/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ sidebar_position: 1

# 介绍

everpay-js 创建 Everpay 实例的配置项,配置项包含:`debug`, `account`, `chainType`, `ethConnectedSigner`, `arJWK`
everpay-js 创建 Everpay 实例的配置项,配置项包含:`debug`, `account`, `isSmartAccount`, `chainType`, `ethConnectedSigner`, `arJWK`

* 配置项类型为 [`Config`](../types#config)

```ts
Expand All @@ -14,5 +15,6 @@ export interface Config {
chainType?: ChainType
ethConnectedSigner?: Signer
arJWK?: ArJWK
isSmartAccount?: boolean
}
```
31 changes: 31 additions & 0 deletions docs/guide/SDK/everpay-js/configuration/isSmartAccount.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
sidebar_position: 4
---

# isSmartAccount

## 配置项功能

此配置项用于通过 智能账户(webauthn) 来操作 everPay `智能账户模型` 的 账户,对该账户进行:

- 充值:**智能账户不支持充值**
- 转账:跳转 `https://beta.everpay.io/sign` 页面,传递签名参数,完成转账操作。
- 提现:跳转 `https://beta.everpay.io/sign` 页面,传递签名参数,完成提现操作。

## 配置项类型

boolean

## 如何配置

```ts
const account = await new Everpay().smartAccountAuth('https://app-dev.permaswap.network/permalogo.svg')
const everpay = new Everpay({
account,
isSmartAccount: true
})
```

:::danger
智能账户模型仅适用于浏览器环境
:::
9 changes: 9 additions & 0 deletions docs/guide/SDK/everpay-js/demo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
sidebar_position: 10
---

# Demo

## 介绍

为方便开发者快速集成 everpay-js,提供了相应的 demo 作为参考 [everpayjs-demo](https://github.com/everFinance/everpayjs-demo)
11 changes: 11 additions & 0 deletions docs/guide/SDK/everpay-js/errors.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,17 @@ enum ERRORS {
}
```

## 智能账户模型

```ts
'ACCOUNT_NOT_RECEIVE'
'MESSAGEDATA_NOT_RECEIVE'
'ACCOUNT_NOT_MATCH'
'CANCEL_SIGN'
'POPUP_CLOSED'
'AUTHORIZE_TIMEOUT'
```

:::danger
因 arConnect 当前问题较多,当前在 arConnect 基础上,放置了一些错误
:::
4 changes: 1 addition & 3 deletions docs/guide/SDK/everpay-js/operation-api/bundle.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import TabItem from '@theme/TabItem';
根据 Everpay 实例创建时,传递的 `account`, `ethConnectedSigner`, `arJWK` 参数,在批量转账时进行以下步骤:

* 内部构建 [EverpayTxWithoutSig](../types#everpaytxwithoutsig)
* 调用对应(插件)钱包签名功能,生成 `sig`,组装 [EverpayTx](../types#everpaytx)
* 调用对应(插件)钱包/webauthn签名功能,生成 `sig`,组装 [EverpayTx](../types#everpaytx)
* 将信息发送给 everPay 后端服务器,进行签名验证。
* 后端服务器验证通过,更新用户资产余额。并将该笔 everPay 交易记录存储在 arweave 区块链上。

Expand Down Expand Up @@ -51,8 +51,6 @@ export interface BundleParams {
</TabItem>
</Tabs>



## 返回

```ts
Expand Down
13 changes: 10 additions & 3 deletions docs/guide/SDK/everpay-js/operation-api/deposit.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,14 @@ import TabItem from '@theme/TabItem';

## 功能

根据 Everpay 实例创建时,传递的 `account`, `ethConnectedSigner`, `arJWK` 参数,调用对应(插件)钱包转账功能,对 everPay 账户进行充值。
根据 Everpay 实例创建时,传递的 `account`, `ethConnectedSigner`, `arJWK` 参数,调用对应(插件)钱包/webauthn转账功能,对 everPay 账户进行充值。

:::danger 私钥泄漏风险
智能账户模型不支持充值
:::

## 参数

```ts
everpay.deposit(depositParams: DepositParams): EthereumTransaction | ArweaveTransaction
```
Expand All @@ -33,12 +38,14 @@ export interface DepositParams {
amount: string
}
```

</TabItem>
</Tabs>

:::caution
* 在进行 everPay 账户充值时,`chainType` 网络需要支持该 `Token tag`,否则无法充值成功。
* 可通过 [`TokenList`](../basic-api/info.md#示例返回) 查看该[`Token crossChainInfoList`](../basic-api/info.md#token-字段描述) 字段,是否包含当前 `chainType` 网络。

* 在进行 everPay 账户充值时,`chainType` 网络需要支持该 `Token tag`,否则无法充值成功。
* 可通过 [`TokenList`](../basic-api/info.md#示例返回) 查看该[`Token crossChainInfoList`](../basic-api/info.md#token-字段描述) 字段,是否包含当前 `chainType` 网络。
:::

## 返回
Expand Down
Loading

0 comments on commit 2ea8bb3

Please sign in to comment.