npm 包 @ferngully/daostack-arc.js 使用教程

阅读时长 7 分钟读完

简介

@ferngully/daostack-arc.js 是一个基于 Ethers.js 的 DAOStack ARC (Alchemy of Regeneration and Creation) 合约的 JavaScript 包。它提供了一个方便的接口让你可以使用 JavaScript 与 DAOStack 智能合约进行交互。

安装

你可以通过 npm 包管理器来安装 @ferngully/daostack-arc.js,只需运行以下命令:

初始化

在使用任何功能之前,你需要先初始化该包。示例代码如下:

在这个示例中,我们连接了 Infura 网络,并创建了一个用于访问该网络的签名用户。我们还使用了从 DAOStack UI 上获取的 Firestore 地址初始化了 DAOStack 实例。你需要提供真实的 Infura 项目 ID、私钥和 Firestore 地址。

签名交易

使用 DAOStack 合约需要通过签名交易进行。下面是一份签名 Eth 转账的示例代码:

-- -------------------- ---- -------
----- - ------ - - ------------------
----- --- - --------------------------------------

----- -------- - --- ----------------------------------------------------------------------------------------
----- ------ - --- ---------------------------------------- ----------
----- ------------------- - ---------------------------------------------

----- --- - ------------------------------------------------- --------

----- --------------- - -
  --- ---------------------------------------------
  ------ ----------------------------
--

----- ----------------- - ----- -------------------------------------

----- -------------------------

在这个示例中,我们使用了 Eth 以及 @ethersproject/bignumber 套件的常量对象,以将 1 ETH 转到目标地址。我们还将签名交易传递给 DAOStack 实例,以便它进行签名并发送交易。

创建治理提案

DAOStack 是一个用于管理 DAO 的框架,因此一个重要的功能就是支持创建提案。下面是一个创建修改 DAO 背景颜色的治理提案的示例代码:

-- -------------------- ---- -------
----- - ------ - - ------------------
----- --- - --------------------------------------

----- -------- - --- ----------------------------------------------------------------------------------------
----- ------ - --- ---------------------------------------- ----------
----- ------------------- - ---------------------------------------------

----- --- - ------------------------------------------------- --------

----- ------------ - -
  --------- -------------
  ----- -------------
  ---- ---------------------------
  ------ -------
  ---------- ---------------------------------------------------------------------
  ------ --
  ---------- -----------
  -------------- ---------------------------------
  ------------------- ------ -- -- -------
  ------------- -----
  --------- -
    ------ ------- --- ---------- -------
    ----- ----- -------- -------- -------- --- --- ---------- ----- -- ----------
    -------- -
      -
        --- ------
        ------ ----- ------ --- ---------- -------
        -------- ----
      --
      -
        --- -----
        ------ ---- ---- ------- ---------- ------
      -
    -
  -
--

----- -------- - ----- ---------------------------------

在这个示例中,我们创建了一个包含以下属性的提案对象:

  • actionId 是执行该提案的合约方法 ID。
  • data 是调用合约方法的参数。
  • did 是地址,指向存储在 IPFS 上的 JSON-RPC 文档,描述该提案的更多细节。
  • nonce 是 DAO 中下一个未被使用的 nonce 值。
  • signature 是 MetaTransaction 交易的签名。
  • state 是当前提案状态。
  • timestamp 是提案创建的时间。
  • voteMagnitude 是 DAO 的可供投票的总代币数量。
  • votingPeriodLength 是提案开放的投票期长度(以秒为单位)。
  • votingQuorum 是提案需要获得的最小投票占比。
  • metadata 是一个对象,其包含更多有关提案的元数据(如标题、正文和选项)。

通过调用 DAOStack 实例的 createProposal() 函数,将返回包含有关新提案的元数据的对象。

结论

现在你已经知道如何通过 npm 包 @ferngully/daostack-arc.js 与 DAOStack 合约交互,包括签名交易和创建治理提案等操作。希望这篇文章能够帮助你更好地理解 DAOStack 的概念,并能为你在前端开发中提供指导。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600573e381e8991b448e9c9d

纠错
反馈