编写多重签名钱包并部署

  • BuildBear
  • 发布于 2022-11-24 21:49
  • 阅读 41

本文介绍了多重签名钱包的概念、应用及其具体实现过程。文章详细讲解了多重签名钱包的工作原理,分为两种类型,并提供了使用 BuildBear 平台进行智能合约创建、部署和交互的具体步骤与示例,适合对区块链开发感兴趣的读者。

什么是 MultiSig 钱包?

一个使用多个签名的数字钱包被称为 multisig 钱包。这意味着需要多个私钥来签名和批准加密交易。

MultiSig 钱包的应用

简单来说,MultiSig 钱包可以理解为一个有多个锁的箱子,每个锁都有独特的钥匙,只有当所有的锁或某些数量的锁被解锁时,箱子才能打开。例如,一个银行的保险箱,其中一把钥匙在你手中,另一把在银行,只有当两把钥匙都使用时,箱子才能被打开。

MultiSig 钱包有两种类型:

  • nn 类型:在这种类型中,如果有 n 把独特的钥匙,则需要所有的 n 把钥匙才能访问钱包,例如 2 的 2,3 的 3 类型的 MultiSig 钱包。这种类型非常安全,但也存在很大的风险,如果丢失任何一把钥匙,则无法访问整个钱包。
  • nm 类型:这是一种更易于访问的钱包类型,如果钱包总共有 m 把独特的钥匙,则只需要 n 把钥匙即可访问,其中 n < m。通常是 2-of-3 或 3-of-4 的形式,需要大多数人的批准才能访问钱包。这是安全的,即使你丢失了一把钥匙,也不会失去对整个钱包的访问权限。

现在让我们开始创建我们自己的 MultiSig 钱包并进行测试!

(A) 本地设置

你可以从这里克隆教程库:Github,然后进入 multisig 文件夹。

(B) 安装

一旦代码设置在你的本地系统上,你需要确保使用 npm iyarn install 安装所有依赖项,具体取决于你的个人偏好。

(C) 理解 MultiSig 钱包的结构

(C1) multisig.sol 的构造函数

这个合约的构造函数接受两个参数:

(a) 所有者列表和

(b) 执行任何交易所需的最低批准数。

(C2) 创建和批准交易

在 multisig 钱包中,重要的是所需数量的所有者在交易执行之前批准交易。任何人都可以创建并提交交易请求所有者批准。这是通过 submitTransaction 函数完成的。它生成一个交易索引,可以在将来参考该交易。

现在,所有者可以使用这个交易索引来批准交易,通过 confirmTransaction 函数。如果所需数量的所有者批准,交易才会执行,否则我们将等待其他人批准。

(C3) 执行交易

最后,一旦交易创建并获得所需数量的所有者的批准,可以由部署合约的所有者执行它。为使其执行,我们首先需要检查它是否以前没有执行过,以避免重复转账,并且该交易是否已获得所有者的批准,如果没有,则会引发错误。一旦执行,交易将标记为已执行,并触发事件。

我希望现在你对合约的结构已经清楚了,如果有疑问,请随时在评论中与我联系。是时候看看你的合约的运作了!

(D) 部署智能合约:multisig.sol

为了部署和演示的目的,我们将在 BuildBear 上部署智能合约 → buildbear.io

在 BuildBear 上创建私有测试网 🐻‍❄️ (你问为什么是 BuildBear?请看看这里:Where Localhost FailsWin Web3 Hackathons, using BuildBear Testnet’s Analytics

我们已从 BuildBear 获取到我们的 RPC,并更新了我们的 .env 文件以包含 RPC 端点。

我们已经将 hardhat.config.js 更新为以下内容:

要部署你的智能合约,请运行命令 npx hardhat run scripts/deploy.js --network buildbear

一旦你运行了上述命令,智能合约应该已成功部署,终端将提供智能合约被部署的地址,如下所示:

(E) 与我们的智能合约互动

💡 额外奖励,你可以与我的合约互动,多亏了 BuildBear!!!(更多关于 BuildBear 的好处 在这里](https://learnblockchain.cn/article/13408) 这里 这里 _)

复制产生的地址,然后前往你私人版本的 BuildBear Explorer。你可以访问我的:BuildBear | Explorer。我的合约被部署在 0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44 ,因此我的合约可以在这里找到。

现在,是时候利用这个 multisig 钱包了。为此,请前往上述页面的合约选项卡,那里可以看到 读取合约写入合约 选项。你可以先从读取合约部分查看合约的详细信息,例如合约的所有者、提交的交易数量等。最初,交易数量为 0,我已添加我的 3 个测试钱包作为合约的所有者。

我们来提交一笔交易。我将转帐 5 BB Eth 到我的一个测试钱包(0x07E2E295d73Bba059A4002f02803eaA7eF285b74)。

为了执行这笔交易,至少需要得到 2 个钱包的所有者的批准。由于这是第一笔交易,因此交易索引为 0,我们将使用此索引在接下来的步骤中与合约交互。

一旦交易获得批准,我们必须使用相同的交易索引执行交易。你可以通过以下哈希检查执行交易:0x8653d6090e8f6e3d0bf2b79857c31484d1108201ea87fd09d024307eda090bd1,可在 BuildBear explorer 上查找,或使用此链接

BuildBear 帮助理解交易内部发生的事情,可真不错

如你所见,5 BB Eth 现在已转入测试帐户。如果没有提供钱包要求的 2 个批准,这是不可能发生的。

通过这一点,我们结束了关于 MultiSig 钱包的文章。

借助 BuildBear,我能够与你分享我的交易,并允许任何人,包括你,与合约交互。是的,你实际上可以在我列出的合约中提议一个交易→https://explorer.buildbear.io/node/adoring-satoshi-ed90b2/address/0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44/writeContract

使用我的私有水龙头,在这里获取你所需的任意本地Coin,请不要犹豫,给我发送交易→https://faucet.buildbear.io/adoring-satoshi-ed90b2

BuildBear 为你提供了一个私有测试节点,使测试过程顺畅高效。我希望你也能跟随教程,构建你自己的 MultiSig 钱包。

如果在实现智能合约时遇到任何困难,请在评论中告诉我们,我们将帮助你解决。对于任何其他反馈或建议,请随时在评论区与我联系。

要了解更多关于 BuildBear 的信息,请阅读这里的 docs

这里 获取上述 Github 代码。

如果你欣赏我们所做的事情,请在 Twitter 上关注我们,并加入 Telegram 群组Join the Telegram,如果你还没加入的话。

如果你喜欢我们的工作,请给我们一个掌声 👏 !并请分享这篇文章。

  • 原文链接: medium.com/buildbear/lea...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
BuildBear
BuildBear
https://medium.com/buildbear