1. 主页 > 区块链

建立ERC20虚拟货币缴付分拆智能化合同蓝色财经新闻shib币价格


欧易(OKX)交易所 - 全球顶尖数字货币交易平台

注册立即 领取价值高达 6,0000 元的数字货币盲盒,邀请码:vip1234,享受 20%手续费减免。

欧易注册 APP下载

什币网

在身份验证汇率的基本上每一应用领域,缴付都是三个反反复复出现的热门话题,特别是向数个债权者提供更多缴付。比如,DAO期望为数个方案提供更多资金,DEX期望分拆向这类参加者重新分配交易服务费,或是项目组期望将虚拟汇率作为月工资分发送给项目组核心成员。

智能化合同使他们能智能化这些类别的缴付机能,这就管制了育苗管理工作缴付所引致的潜在性严重错误,并容许他们将可贵的时间花在其他第二产业各项任务上。

那时,他们将自学如何建立他们的ERC20虚拟汇率缴付分拆器,它能分拆到任何人工程项目中!

上面的文本要求你对Solidity有点儿熟识,不过其他人都能自学。

他们将建立三个合同。第三个将是ERC20虚拟汇率缴付分拆智能化合同,第三个将是演示池智能化合同。ERC20虚拟汇率缴付分拆器智能化合同将是抽象化的,并所持用作管理工作收款方或其各别缴付部分的方法论和数据。演示池将承继ERC20虚拟汇率缴付分拆器,以期他们能手动将缴付分发送给数个债权者。在三个合同中分拆缴付机能的其原因有三个:

OpenZeppelin已近三个名叫PaymentSplitter.sol的智能化合同。用作镜像坊缴付分拆。他们将借助这个原有的机能并对其进行订制,使其能与ERC20虚拟汇率一起工作。

本讲义中的辅助工具:

现在在三个空目录中采用NPM init -y开启三个NPM工程项目

增设工程项目后,采用下列指示加装 Hardhat:

在加装了Hardhat之后,输出npx Hardhat并优先选择建立基本实例工程项目的快捷键。这将包括三个方便快捷的文档结构,能随心所欲地建立、试验和布署您他们的合同。

优先选择建立基本实例工程项目

能删除contract 文档夹中的Greeter.sol文档,并从test文档夹中删除sample-test.js文档。

他们还将加装安全帽插件库,它们是Hardhat插件。它们容许他们添加用作试验和布署智能化合同的辅助工具。

在hardhat.config.js文档的顶部,添加

需加装三个叫chai的包,用来试验他们的智能化合同。

需加装OpenZeppelin合同库。

这个虚拟汇率缴付分拆智能化合同将提供更多方法论来增设和存储涉及收款人列表和每一收款人份额的数据。每一收款人所持的份额数等于他们应该获得的资金比例(比如,如果有4个收款人,每一人所持5份额,那么他们每一人将获得任何人支出的25%)。

要开始这个合同,他们将在他们的合同文档夹中建立三个新文档,并将其命名叫TokenPaymentSplitter.sol。

增设pragma line和contract shell。区块链 时间 https://www.110btc.com/qukuai

注意,这是三个抽象化合同,他们稍后将把它导入演示池合同。使它成为抽象化的,也容许他们在未来随心所欲地将这个合同导入到任何人其他真实的工程项目中。

现在让他们从OpenZeppelin导入三个有用的辅助工具。

SafeERC20.sol 提供更多了ERC20接口,该接口容许他们从任何人ERC20智能化合同调用标准函数,并将这些调用包装在附加机能中,以提供更多更安全的方式传输虚拟汇率。

现在,他们将建立变量来存储合同数据。

paymentToken是他们用作缴付的ERC20虚拟汇率的地址。

_totalShares提供更多来自所有收款人的份额相加。

_totalTokenReleased是已缴付给所有收款人的缴付虚拟汇率总额。

_payees提供更多了当前所有收款人地址的数组。

_shares是收款人地址与重新分配给他们的份额数量的映射。

_tokenReleased是收款人地址到缴付虚拟汇率数量的映射。

现在放置三个接受三个参数的构造函数。第三个参数是他们期望在合同布署中初始化的收款人的数组。第三个参数是每一收款人的份额数组。第三个是将用作缴付的ERC20虚拟汇率的地址。

构造函数包含三个require语句,以确保三个数组具有相同的长度,以期每一收款人都有重新分配给他们的份额。还有另三个require语句,以确保合同初始化与至少有三个收款人。

三个比特币值多少人民币

还有三个for循环,它将每一收款人或其份额重新分配他们上面建立的变量。这是通过三个名叫_addPayee的函数完成的,他们将很快建立这个函数。

构造函数就绪后,再添加几个函数来调用和获取合同变量。

现在他们将建立用作添加收款人的函数。

_addPayee是他们在构造函数中调用的用作增设收款人数组的函数。这个函数有三个参数,收款人的帐户和与其相关的份额数量。然后它会检查账户是否为零地址,份额是否大于零,以及该账户是否已经注册为收款人。如果所有检查都通过,那么他们将数据添加到各别的变量中。

现在让他们添加三个函数来支持将虚拟汇率分发送给收款人。

Release是三个其他人都能调用的函数,它接受三个原有收款人帐户的参数。来分析一下这个函数中发生了什么。首先,它检查帐户是否有重新分配给它的份额。然后,它建立三个名叫tokenTotalReceived的变量,该变量将合同的当前虚拟汇率余额与之前释放的虚拟汇率总数相加。建立另三个称为payment的变量,该变量确定收到的虚拟汇率总额中有多少是欠账户的,然后减去多少已经释放到账户。然后,三个require语句检查当前缴付金额是否大于零(即,当前是否欠下了更多虚拟汇率)。如果该检查通过,则更新账户的tokenReleased,并更新区块链 时间 https://www.110btc.com/qukuaitotalTokenReleased。最后,缴付给账户的虚拟汇率金额被转账。

现在函数已经就位了!但是这个合同还有一件事要做....事件!

他们将在合同中添加三个事件,将事件添加到合同顶部是三个良好的实践。

合同中包含这些事件之后,他们将在适当的函数中发出它们。

现在虚拟汇率缴付分拆合同已经建立!为了理解这在真实场景中是如何工作的,让他们建立三个演示池合同,它将导入虚拟汇率缴付分拆器。

这个合同不会很复杂,因为他们只是想演示如何集成虚拟汇率缴付分拆器。这个合同定期收到他们想分发送给收款人列表的特定ERC20虚拟汇率。这个ERC20虚拟汇率能通过不同的场景到达,比如用户存款或来自另三个智能化合同的重定向服务费。在现实生活中,根据不同的工程项目,可能会有三个更复杂的合同,包含更多的机能来满足用户的用例。

在合同文档夹中,建立三个名叫 MockPool.sol 的新文档。然后添加下列代码。

在这份合同中,导入三样东西。首先是OpenZeppelin的Ownable实用程序,它在这类函数上采用唯一的onlyOwner 修饰符。第三个是SafeERC20,它容许安全的ERC20虚拟汇率转账,正如将在合同中看到。第三个是他们的TokenPaymentSplitter合同。

在MockPool构造函数中,他们需要TokenPaymentSplitter提供更多相同的三个参数,他们只是将它们传递给他们承继的合同。

在这个合同中添加了另三个函数,drainTo。它实际上与TokenPaymentSplitter合同没有任何人关系。它只是在另三个没有增设为缴付虚拟汇率的ERC20虚拟汇率被发送到池时的一种安全机制,然后有一种方法让合同所有者释放该虚拟汇率。

试验智能化合同与建立它们同样重要。这些合同处理的资产通常是属于其他人的,所以作为开发人员,他们有责任确保这些资产按照他们应该的方式工作,并且他们的试验能覆盖基本上所有的边缘情况。

awc

将在这里进行的试验是一些实例,以显示TokenPaymentSplitter智能化合同按照他们的预期工作。在处理他们的工程项目时,可能期望建立专门适合他们的用例的试验。

为了支持他们的试验,他们期望包含三个ERC20虚拟汇率,为此,他们将建立三个新的solididity文档,该文档导入OpenZepplin ERC20模板以供他们的试验采用。在合同文档夹中,建立三个名叫Imports.sol 的新文档,并包括下列代码:区块链 时间 https://www.110btc.com/qukuai

现在,在test文档夹中建立三个名叫test.js的文档。在这个文档的顶部,他们将导入支持他们的试验的包。

现在,为了增设试验,他们将首先建立必要的变量,建立beforeEach函数,该函数在每次试验之前调用,并建立三个空的 describe 函数,该函数将很快包含他们的试验。

在这些部分就位后,让他们进入这些试验的核心部分!

在他们的第三个试验中,他们想看看当他们布署三个包含平均重新分配份额的收款人列表的合同时会发生什么。上面是试验代码。

在这个试验中,他们将合同重新分配给4个收款人,每一人都有10个相同的份额。然后他们向合同发送100000单位的testPaymentToken,并向每一收款人发放付款。在试验中能注意到,每一收款人都在调用函数来向他们释放虚拟汇率。

在第三个试验中,他们期望确保即使每一收款人的份额重新分配不均,数学计算仍然有效。

看起来收款人还能拿到钱,但注意到什么了吗?合同中还剩下三个单位的缴付虚拟汇率!由于Solidity没有小数,当它达到最低单位时,它通常会四舍五入,这可能会引致合同尘埃飞扬,就像他们在这里看到的。不过不用担心,因为他们预计未来会有缴付虚拟汇率流入合同,所以它将继续分发。

这与之前的试验类似,不过在资金被释放给收款人之间增加了更多缴付虚拟汇率发送到池中。这表明,随着缴付虚拟汇率不断流入演示池合同,数学仍然能确保收款人收到正确的金额。

现在所有的试验都就绪了,是时候运行它们了,看看它们是否工作!在工程项目根文档夹中,采用npx hardhat test开启试验。如果一切都是正确的,那么你应该看到如下图所示的所有绿色格子。

如上所述,他们需要做更多的试验,以确保整个工程项目/协议按照预期工作,缴付分拆器是它的集成部分。这将意味着更多的单元试验来覆盖所有可用的机能,以及更复杂的集成试验,这取决于具体用例。

缴付是许多身份验证协议的三个常见方面,有几种方法能解决它们。那时他们自学了一种管理工作缴付的方法,尽管用户甚至能在此合同的基础上构建以满足您的特定需求,如跨数个虚拟汇率启用缴付,添加额外的收款人或移除收款人,或在三个函数调用中同时分发所有缴付。

Source:https://medium.com/coinmonks/create-an-erc20-token-payment-splitting-smart-contract-c79436470ccc区块链 时间 https://www.110btc.com/qukuai

迅雷链

本文来自网络,不代表币圈之家立场,如有侵权请联系我们删除,转载请注明出处:https://www.110btc.com/qukuai/2402.html

联系我们

在线咨询:点击这里给我发消息

微信号:AB100082

工作日:9:30-18:30,节假日休息