假设我有一个可靠的智能契约MultiToken.sol
,我正在使用硬帽进行开发和测试,并将其部署到RSK网络。
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
contract MultiToken is ERC1155 {
constructor(string memory uri) ERC1155(uri) {}
}
我正在测试before
部分中部署智能契约:
const { expect } = require('chai');
const { ethers } = require('hardhat');
describe('MultiToken', () => {
let multiToken;
const uri = 'https://token-cdn-domain/{id}.json';
before(async () => {
const factory = await ethers.getContractFactory('MultiToken');
multiToken = await factory.deploy(uri);
await multiToken.deployed();
});
it('MultiToken URI must be correct', async () => {
const multiTokenUri = await multiToken.uri(0);
expect(multiTokenUri).to.equal(uri);
});
});
在部署事务期间,我希望能够将一些RBTC传输到智能契约的地址。是否有可能在部署时用安全帽和以太来补充智能合同的余额?,我能用一个事务来完成吗?,这是我的:
require('@nomiclabs/hardhat-waffle');
const { mnemonic } = require('./.secret.json');
module.exports = {
solidity: '0.8.4',
defaultNetwork: 'rskregtest',
networks: {
rskregtest: {
url: 'http://localhost:4444',
chainId: 33,
},
rsktestnet: {
chainId: 31,
url: 'https://public-node.testnet.rsk.co/',
accounts: {
mnemonic,
path: "m/44'/60'/0'/0",
},
},
},
};
发布于 2022-06-09 16:51:28
可以将constructor
声明为payable
,然后重写部署事务的value
参数(默认值0)。
contract MultiToken is ERC1155 {
constructor(string memory uri) ERC1155(uri) payable {}
}
multiToken = await factory.deploy(uri, {
value: ethers.utils.parseUnits("1"), // 1 RBTC to wei
});
医生:
https://stackoverflow.com/questions/72563398
复制相似问题