0%

remix | 开源多文件合约项目

这里提供如何开源多文件项目。

如果你的合约文件存在文件引用,如

1
2
3
4
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {Pausable} from "@openzeppelin/contracts/security/Pausable.sol";
import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";

那么,如果,你只开源主文件那肯定不行。

合成一个文件

在主程序中使用图上红框的命令,然后生成绿框的文件。

这个绿框的文件就是将所有代码合成一个文件。复制这文件的内容,然后当作独立合约上传即可。

但是,这种情况产生的问题就是,公开的时候,所有文件都合成一个文件了,如

带参数的合约验证

如果你的合约里面有多个 contract 的话。

右边的合约参考

我们主要部署的合约是 THLMAirdrop。假设我们已经把合约部署上去了。

部署的细节如下,也就是需要填写参数

我们复制一下上图中的红框的内容,发现最后几位是 de565b92508282019050808211156111ab576111aa611151565b5b9291505056fea26469706673582212202f52cf9b523d3176e25828f1191525a2b45e09105129d8f4e2221ff27f799baa64736f6c634300081a00330000000000000000000000005122cf747906a22842d25dfcd10daf6a166160de000000000000000000000000803d58ff1e4a07c9eefcf9aa5e4a7fd49e1ebdae

而部署后的合约的码位是

最后几位和上面不一样,而是少了 0000000000000000000000005122cf747906a22842d25dfcd10daf6a166160de000000000000000000000000803d58ff1e4a07c9eefcf9aa5e4a7fd49e1ebdae

仔细观察其实这是我们写的参数,也就是下图绿框的内容。

然后,我们仿照上面合成一个文件,对 THLMAirdrop 生成 thlmairdrop_flattened.sol

复制内容后,进行公开

最后一行不要有空格。

填写参数。

这样我们就能验证通过了。

另外,上述合约中,我们通过合约创建了一个内部合约,即 THLMStakingToken

我们通过上述合约的 stakeingToken 方法找到这个合约的地址。

然后,我们把 THLMStakingToken 的合约内容摘出来,放在一个合约中。

然后对这个合约进行上述开源操作就好了。

请我喝杯咖啡吧~