在密码货币的大部分领域,支付一直是一个热门话题,特别是向多家当铺提供支付。 例如,DAO希望为多个计划提供资金,DEX希望合并后将交易费用分配给一些参与者。 此外,小组还希望将令牌作为月薪发放给小组成员。
智能合约可以自动执行这些类型的支付功能,从而限制了手动管理支付带来的潜在错误,并节省了宝贵的时间用于其他生产任务。
今天,我们将学习如何创建自己的ERC20令牌支付拆分器。 可以纳入任何项目。
制定两份
在现实世界的用例中表示令牌支付分割合同的使用
确保令牌的支付分期合同足够灵活,任何人都可以选择并集成到自己的项目中
OpenZeppelin已有一个名为PaymentSplitter.sol的智能合约。 用于以太坊的付款分割。 利用中现有的功能,定制为与ERC20令牌一起工作。
头盔——智能交通工具开发环境
OpenZeppelin -经鉴定的智能合约模板
在空目录中使用NPM init -y启动NPM项目
设置项目后,请使用以下命令安装Hardhat :
安装Hardhat后,输入npx Hardhat,然后选择用于创建基本示例项目的选项。 这包括一个方便的文件结构,可以方便地创建、测试和部署自己的合同。
选择创建基本示例项目
可以从contract文件夹中删除Greeter.sol文件,也可以从test文件夹中删除sample-test.js文件。
还将安装头盔的插件库。 这些是硬件插件。 可以添加用于测试和部署智能合约的工具。
在hardhat.config.js文件的顶部添加
为了测试我们的智能合约,需要安装一个叫chai的包。
需要OpenZeppelin合同库。
要启动此合同,请在合同文件夹中创建一个名为TokenPaymentSplitter.sol的新文件。
设置pragma line和连接壳。
布拉格固态^0.8. 0; abstractcontracttokenpaymentsplitter {请注意,这是一个抽象合同。 稍后导入到模拟池合同中。 将其抽象化,以便将来可以轻松地将此合同部署到其他实际项目中。
现在,让我们从OpenZeppelin引入有用的工具。
布拉格固态^0.8. 0; 导入' @开放零部件/合同/烤饼/ERC 20 /实用/安全ERC 20.Sol '; Abstractcontracttokenpaymentsplitter { USingSafeerc 20 fori ERC 20; SafeERC20.sol提供了ERC20接口。 使用该接口,可以从ERC20智能合约中调用标准函数,并将这些调用包装在附加功能中,从而更安全地传输令牌。
现在,创建存储合同数据的变量。
Abstractcontracttokenpaymentsplitter { USingSafeerc 20 fori ERC 20; addressinternalpaymentToken; unt 256国际_总共享; unt 256内部_总承载释放; 地址[ ]内部支付; 映射(地址=单元256 )内部共享; 映射(地址=uint 256 )内部_ token已发布; 付款