合约 SDK 使用说明
语言
目前仅支持 Javascript/Typescript
安装 SDK
yarn add ensoul-sbt-contract-sdk
或者
npm install ensoul-sbt-contract-sdk
使用 SDK
import {DeploymentInfo,v1_1} from "ensoul-sbt-contract-sdk";
// PROVIDER_NET 主网为 polygon,PROVIDER_APIKEY 为 Polygonscan API KEY
const provider = new EtherscanProvider(process.env.PROVIDER_NET, process.env.PROVIDER_APIKEY);
// 获取私钥
const PRIVATE_KEY = process.env.PRIVATE_KEY;
// 获取 signer
const signer = new ethers.Wallet(PRIVATE_KEY as string, provider);
// 创建 ensoulFactory 对象
const ensoulFactory = new v1_1.EtherEnsoulFactoryClient();
// 获取 ensoulFactory 地址( polygon )
const ensoulFactoryAddress = DeploymentInfo[137].Ensoul_Factory_Upgradeable_v1_1.proxyAddress;
// 连接 ensoulFactory 地址和 singer
const ensoultory.connect(singer, ensoulFa
ctoryAddress);
// 查看 address
console.log(ensoulFactory.address());
// 创建 ensoul 对象
const ensoul = new v1_1.EtherEnsoulClient();
// 填写 ensoul 地址
const ensoulAddress = '';
// 连接 ensoul 地址 和 singer
const ensoul.connect(singer, ensoulAddress);
// 查看address
console.log(ensoul.address());
EtherEnsoulFactoryClient.ts
1、EtherEnsoulFactoryClient.ts 是 Ensoul Fatctory 合约的接口对象,用来调用 Ensoul Fatctory 合约。
2、调用 EtherEnsoulFactoryClient 需要连接 Ensoul 管理员钱包 和 EnsoulFactory 合约地址。 EnsoulFactory 合约地址在 SDK 里,可以直接获取。
EtherEnsoulClient.ts
1、EtherEnsoulClient.ts 是 Ensoul 合约的接口对象,用来调用 Ensoul 合约。
2、调用 EtherEnsoulClient 需要连接钱包 和 Ensoul 合约地址。Ensoul 合约地址需要主动提供,钱包可以用用户钱包也可以用 Ensoul 管理员钱包。
3、EtherEnsoulClient 提供了两个签名方法,用户钱包签名之后,使用 Ensoul 管理员钱包将签名数据发出,即可实现帮用户代付 GAS 发行 SBT。
// 批量发行 SBT 签名
signMintToBatchAddressBySignature(
signer: Signer, // 签名者
toList: string[], // 目标地址列表
tokenId: BigNumberish, // tokenId
amount: BigNumberish, // 数量
expiration: BigNumberish // 过期时间
): Promise<Signature>;
// 发行 SBT 签名
signMintBySignature(
signer: Signer, // 签名者
to: string, // 目标地址
tokenId: BigNumberish, // tokenId
amount: BigNumberish, // 数量
expiration: BigNumberish // 过期时间
): Promise<Signature>
EtherEnsoul721FactoryClient 方法
连接 Client
connect(
provider: Provider | Signer, // web3 Provider 或者 Signer
address: string, // 合约地址
waitConfirmations?: number // 确认区块数
): Promise<void>;
获取 Client 合约地址
address(): string; // 返回合约地址
获取 beacon 合约地址
beacon(config?: CallOverrides): Promise<string>; // 返回beacon合约地址
获取 Ensoul 组织合约地址
orgs(
index: BigNumberish, // 序号
config?: CallOverrides // CallOverrides 重写
): Promise<string> // 返回序号对应的合约地址
获取 EnsoulAdmin 地址
getEnsoulAdmin(
config?: CallOverrides // CallOverrides 重写
): Promise<string>; // 返回 ensoulAdmin 地址
获取合约版本号
version(
config?: CallOverrides // CallOverrides 重写
): Promise<string>; // 返回合约版本号
新建 Ensoul 组织
newOrg(
orgOwner: string, // 组织所有者
tokenURI: string, // 包含 token 信息的 URI
contractURI: string, // 包含 contract 信息的 URI
name: string, // 合约名称
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 事件回调
): Promise<Ensoul721FactoryModel.NewOrgEvent>; // 返回 NewOrgEvent 对象
设置 EnsoulAdmin
setEnsoulAdmin(
ensoulAdmin: string, // 新的 ensoulAdmin 地址
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 事件回调
): Promise<void>;
设置 Beacon 合约地址
setBeacon(
beacon: string, // 新的 beacon 地址
config?: PayableOverrides, // PayabbeaconleOverrides 重写
callback?: Function // 事件回调
): Promise<void>;
EtherEnsoulClient 方法
连接 Client
connect(
provider: Provider | Signer, // web3 Provider 或者 Signer
address: string, // 合约地址
waitConfirmations?: number // 确认区块数
): Promise<void>;
获取 Client 合约地址
address(): string; // 返回合约地址
获取合约名
name(
config?: CallOverrides // CallOverrides 重写
): Promise<string>; // 返回合约名
获取版本名
version(
config?: CallOverrides // CallOverrides 重写
): Promise<string>; // 返回版本名
查看 tokenId 是否已经发行
exists(
tokenId: BigNumberish, // 要查看的 tokenId
config?: CallOverrides // CallOverrides 重写
): Promise<boolean>; // 返回 tokenId 是否已经发行
查看地址是否是管理员
orgAdmins(
address: string, // 要查看的地址
config?: CallOverrides // CallOverrides 重写
): Promise<boolean>; // 返回地址是否是管理员
获取合约所有者
owner(
config?: CallOverrides // CallOverrides 重写
): Promise<string>; // 返回合约所有者
查看合约是否暂停
paused(
config?: CallOverrides // CallOverrides 重写
): Promise<boolean>; // 返回合约是否暂停
查看签名是否已经被使用
usedSignature(
v: BigNumberish, // 签名vrs
r: BytesLike,
s: BytesLike,
config?: CallOverrides // CallOverrides 重写
): Promise<boolean>; // 返回签名是否已经被使用
查看接口是否支持
supportsInterface(
interfaceId: BytesLike, // 接口ID
config?: CallOverrides // CallOverrides 重写
): Promise<boolean>; // 返回接口是否支持
获取账户 tokenId 余额
balanceOf(
account: string, // 账户地址
tokenId: BigNumberish, // 要获取的 tokenId
config?: CallOverrides // CallOverrides 重写
): Promise<BigNumber>; // 返回余额数量
批量获取账户 tokenId 余额
balanceOfBatch(
accounts: string[], // 账户地址列表
tokenIds: BigNumberish[], // 要获取的 tokenId 列表
config?: CallOverrides // CallOverrides 重写
): Promise<BigNumber[]>; // 返回余额数量列表
获取 tokenId 发行总量
totalSupply(
tokenId: BigNumberish, // 要获取的 tokenId
config?: CallOverrides // CallOverrides 重写
): Promise<BigNumber>; // 返回 tokenId 发行总量
查看用户是否被授权发行 tokenId
isAllow(
sender: string, // 用户地址
tokenId: BigNumberish, // 要查看的 tokenId
config?: CallOverrides // CallOverrides 重写
): Promise<Boolean>; // 返回用户是否被授权发行 tokenId
获取 contractURI
contractURI(
config?: CallOverrides // CallOverrides 重写
): Promise<string>; // 返回 contractURI
获取 tokenURI
uri(
tokenId: BigNumberish, // 要获取的 tokenId
config?: CallOverrides // CallOverrides 重写
): Promise<string>; // 返回 tokenURI
授权发行 tokenId
allow(
to: string, // 授权账户
tokenId: BigNumberish, // 授权的 tokenId
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
批量授权发行 tokenId
allowBatch(
toList: string[], // 授权账户列表
tokenIdList: BigNumberish[], // 授权的 tokenId 列表
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
销毁 tokenId
burn(
tokenId: BigNumberish, // 要销毁的 tokenId
amount: BigNumberish, // 要销毁的 SBT 的数量,因为一个地址可拥有多个 SBT,默认可以为 1
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
批量销毁 tokenId
burnBatch(
tokenIds: BigNumberish[], // 要销毁的 tokenId 列表
amounts: BigNumberish[], // 对应 tokenIds 要销毁的 SBT 的数量
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
增加管理员
addOrgAdmin(
admin: string, // 管理员地址
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
发行 SBT
mint(
to: string, // 接收地址
tokenId: BigNumberish, // 发行的 tokenId
amount: BigNumberish, // 发行的数量
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
批量发行 SBT
mintToBatchAddress(
toList: string[], // 接收地址列表
tokenId: BigNumberish, // 发行的 tokenId
amount: BigNumberish,// 发行的数量
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
使用签名发行 SBT
mintBySignature(
to: string, // 接收地址
tokenId: BigNumberish, // 发行的 tokenId
amount: BigNumberish, // 发行的数量
expiration: BigNumberish, // 过期时间
v: BigNumberish, // 签名vrs
r: BytesLike,
s: BytesLike,
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
使用签名批量发行 SBT
mintToBatchAddressBySignature(
toList: string[], // 接收地址列表
tokenId: BigNumberish, // 发行的 tokenId
amount: BigNumberish, // 发行的数量
expiration: BigNumberish, // 过期时间
v: BigNumberish, // 签名vrs
r: BytesLike,
s: BytesLike,
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
撤销授权发行 tokenId
revokeAllow(
to: string, // 撤销授权地址
tokenId: BigNumberish, // 撤销授权的 tokenId
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
批量撤销授权发行 tokenId
revokeAllowBatch(
toList: string[], // 撤销授权地址列表
tokenIdList: BigNumberish[], // 撤销授权的 tokenId 列表
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
撤销管理员
revokeOrgAdmin(
admin: string, // 撤销管理员地址
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
设置 contractURI
setContractURI(
contractURI: string, // 新的 contractURI
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
设置 tokenURI
setURI(
URI: string, // 新的 tokenURI
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
暂停 SBT 发行
pause(
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
重启 SBT 发行
unpause(
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
转移合约所有者权限
transferOwnership(
newOwner: string, // 新的合约所有者
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
销毁合约所有者权限
renounceOwnership(
config?: PayableOverrides, // PayableOverrides 重写
callback?: Function // 回调
): Promise<void>;
设置名字
setName(
newName: string, // 新名字
config?: PayableOverrides,
callback?: Function
): Promise<void>;
发行 SBT 签名
signMintBySignature(
signer: Signer, // 签名者
to: string, // 接收者地址
tokenId: BigNumberish, // 发行的 tokenId
amount: BigNumberish, // 发行的数量
expiration: BigNumberish // 过期时间
): Promise<Signature>;
批量发行 SBT 签名
signMintToBatchAddressBySignature(
signer: Signer, // 签名者
toList: string[], // 接收者地址列表
tokenId: BigNumberish, // 发行的 tokenId
amount: BigNumberish, // 发行的数量
expiration: BigNumberish // 过期时间
): Promise<Signature>;