Mar*_*rri 5 solidity rsk ethers.js hardhat
假设我有一个 Solidity 智能合约MultiToken.sol,正在使用Hardhat开发和测试并部署到RSK网络。\n\xe2\x80\x8b
//SPDX-License-Identifier: Unlicense\npragma solidity ^0.8.0;\n\xe2\x80\x8b\nimport "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";\n\xe2\x80\x8b\ncontract MultiToken is ERC1155 {\n constructor(string memory uri) ERC1155(uri) {}\n}\nRun Code Online (Sandbox Code Playgroud)\n\xe2\x80\x8b\n我正在测试before部分部署智能合约:\n\xe2\x80\x8b
//SPDX-License-Identifier: Unlicense\npragma solidity ^0.8.0;\n\xe2\x80\x8b\nimport "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";\n\xe2\x80\x8b\ncontract MultiToken is ERC1155 {\n constructor(string memory uri) ERC1155(uri) {}\n}\nRun Code Online (Sandbox Code Playgroud)\n\xe2\x80\x8b\n我希望能够在部署交易期间将一些RBTC转移到我的智能合约地址。是否可以在部署时使用 Hardhat 和 Ether 充值智能合约的余额?\n\xe2\x80\x8b\n具体来说,我可以通过单个交易来完成此操作吗?\n\xe2\x80\ x8b\n供参考,这是我的hardhat.config.js:\n\xe2\x80\x8b
const { expect } = require(\'chai\');\nconst { ethers } = require(\'hardhat\');\n\xe2\x80\x8b\ndescribe(\'MultiToken\', () => {\n let multiToken;\n\xe2\x80\x8b\n const uri = \'https://token-cdn-domain/{id}.json\';\n\xe2\x80\x8b\n before(async () => {\n const factory = await ethers.getContractFactory(\'MultiToken\');\n multiToken = await factory.deploy(uri);\n await multiToken.deployed();\n });\n\xe2\x80\x8b\n it(\'MultiToken URI must be correct\', async () => {\n const multiTokenUri = await multiToken.uri(0);\n expect(multiTokenUri).to.equal(uri);\n });\n});\nRun Code Online (Sandbox Code Playgroud)\n
您可以声明 constructor as payable,然后覆盖value部署事务的参数(默认值 0)。
contract MultiToken is ERC1155 {
constructor(string memory uri) ERC1155(uri) payable {}
}
Run Code Online (Sandbox Code Playgroud)
multiToken = await factory.deploy(uri, {
value: ethers.utils.parseUnits("1"), // 1 RBTC to wei
});
Run Code Online (Sandbox Code Playgroud)
文件:
| 归档时间: |
|
| 查看次数: |
336 次 |
| 最近记录: |