这里提供如何开源多文件项目。
如果你的合约文件存在文件引用,如
1 | import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; |
那么,如果,你只开源主文件那肯定不行。
合成一个文件
在主程序中使用图上红框的命令,然后生成绿框的文件。
这个绿框的文件就是将所有代码合成一个文件。复制这文件的内容,然后当作独立合约上传即可。
但是,这种情况产生的问题就是,公开的时候,所有文件都合成一个文件了,如
带参数的合约验证
如果你的合约里面有多个 contract
的话。
右边的合约参考
我们主要部署的合约是 THLMAirdrop
。假设我们已经把合约部署上去了。
部署的细节如下,也就是需要填写参数
我们复制一下上图中的红框的内容,发现最后几位是 de565b92508282019050808211156111ab576111aa611151565b5b9291505056fea26469706673582212202f52cf9b523d3176e25828f1191525a2b45e09105129d8f4e2221ff27f799baa64736f6c634300081a00330000000000000000000000005122cf747906a22842d25dfcd10daf6a166160de000000000000000000000000803d58ff1e4a07c9eefcf9aa5e4a7fd49e1ebdae
而部署后的合约的码位是
最后几位和上面不一样,而是少了 0000000000000000000000005122cf747906a22842d25dfcd10daf6a166160de000000000000000000000000803d58ff1e4a07c9eefcf9aa5e4a7fd49e1ebdae
仔细观察其实这是我们写的参数,也就是下图绿框的内容。
然后,我们仿照上面合成一个文件,对 THLMAirdrop
生成 thlmairdrop_flattened.sol
。
复制内容后,进行公开
最后一行不要有空格。
填写参数。
这样我们就能验证通过了。
另外,上述合约中,我们通过合约创建了一个内部合约,即 THLMStakingToken
。
我们通过上述合约的 stakeingToken
方法找到这个合约的地址。
然后,我们把 THLMStakingToken
的合约内容摘出来,放在一个合约中。
然后对这个合约进行上述开源操作就好了。