什么是 @0x/contract-artifacts 包?
@0x/contract-artifacts 是一个 Node.js 包,用于在以太坊上部署及调用智能合约。该包包含了各种以太坊上常用的智能合约 ABI(Application Binary Interface)及二进制代码,可以使用该包来部署自己的智能合约,或者调用已有的智能合约。该包使用的是 0x Protocol 的智能合约 ABI 标准,开发者可以根据需要自行扩展。
如何使用 @0x/contract-artifacts 包?
使用 @0x/contract-artifacts 包很简单,只需要按以下步骤操作即可:
- 安装该包
npm install @0x/contract-artifacts
- 导入该包
const contractArtifacts = require('@0x/contract-artifacts');
- 使用该包
使用该包可以有多种方式,下面将列举两种常用方式:
部署自己的智能合约
-- -------------------- ---- ------- ----- ---- - ---------------- ----- -------- - ----------------------------- ----- --------------- - ------ -- ------- --- ----- ------------ - --- ------------------------------ --------------------------------------------------- ----- ------------------ - --- -------------------------- --------------------------- ----- ----------- ---------- --- ----------- ---- --- --- ------------------------- ----- ---------- -- -------------- --------- -- - --------------------- -------- -- ------------------------- ---
调用已有的智能合约
-- -------------------- ---- ------- ----- ---- - ---------------- ----- -------- - ----------------------------- ----- --------------- - ----------------------------- -- ----- ----- --- --- ----- ------------------- - ----------- -- ----- ----- ---- ----- ------------ - --- ------------------------------ --------------------------------------------------- ----- ------------------ - --- ------------------------- --------------------- ----- ------- - -------------------------------------------------------- --------------------- -- ---------
怎样扩展 @0x/contract-artifacts 包?
@0x/contract-artifacts 包使用的是 0x Protocol 的智能合约 ABI 标准,可以根据自己的需要在该标准的基础上扩展更多的智能合约 ABI。以添加一个名为 MyContract 的智能合约 ABI 为例,步骤如下:
在 @0x/contract-artifacts 包中,找到 src/abis 目录下的 json 文件,并添加一个新的 json 文件 MyContract.json,该文件的内容应符合 0x Protocol 的智能合约 ABI 标准。
在 @0x/contract-artifacts 包中,找到 src/index.ts 文件,添加如下的语句:
import myContractArtifact from './abis/MyContract.json';
在 @0x/contract-artifacts 包的构建脚本中,添加将 src/abis 目录下的所有 json 文件编译成 js 文件的语句(常见使用 tsc 命令),以便生成支持 TypeScript 的类型声明文件。
在自己的代码中,导入新增的智能合约 ABI:
const MY_CONTRACT_ABI = contractArtifacts.myContract;
示例代码
下面给出一个部署自己智能合约的完整示例代码:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- -------- - ----------------------------- ----- ----------------- - ---------------------------------- ----- --------------- - - - --------- --- ------- ----------- ---------- - - --------------- --------- ------- --- ------- -------- - -- ------------------ ------- ------- ---------- -- - --------- --- ------------------ ---------- ------- ------------- - -- ----- -------------------- - ------------ -- -------- ----- ------------ - --- ------------------------------ --------------------------------------------------- ----- ------------------ - --- -------------------------- --------------------------- ----- --------------------- ---------- -- --- ------------------------- ----- ----------- ---- ------- -- -------------- --------- -- - --------------------- -------- -- ------------------------- ---
上述代码使用的合约 ABI 是一个简单的合约,只有一个返回字符串类型的方法 sayHello,和一个 payable 的构造函数。使用该代码可以先将合约部署到以太坊上,再通过所部署的合约地址进行调用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/125300