Skip to main content

Week9 - 8.29

Day1 conflux 合约工具库

openzepplin是以太坊开发最重要的合约库, conflux-contracts 则是为了方便conflux开发者而封装的合约集合,主要包含

Day2 合约中如何判断是否为cfx链

conflux 链上的erc1820地址与以太坊不同, 以太坊为0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24, conflux core space为0x88887eD889e776bCBe2f0f9932EcFaBcDfCd1820 ,通过判断该特征即可,conflux-contracts提供了该实现

Day3 如何通过合约一次访问多个合约方法

dapp经常需要同时获取很多合约状态,如果每次读取合约都发送一次rpc请求,则需要并发大量请求,这样容易对服务区造成很大压力导致rpc node服务器性能下降或者被限流。而使用multicall进行则可以一次rpc请求访问多个合约方法,从而避免该问题。

multicall 提供了一系列方法方便一次访问多个合约方法,实现原理为在合约方法中批量 static call, 使用该方法需要我们事先根据要访问的合约方法abi编码好数据。

如要获取地址cfxtest:aanpu16mtgc7dke5xhuktyfyef8f00pz8a2z5mc14gcfxtest:aaskvgxcfej371g4ecepx9an78ngrke5ay9f8jtbggusdt 余额

  • 编码data
    • balanceOf("cfxtest:aanpu16mtgc7dke5xhuktyfyef8f00pz8a2z5mc14g")编码后的data为 0x70a0823100000000000000000000000016c85f8a7985d1a49b99e097d0b4217c5b5995f0
    • balanceOf("cfxtest:aaskvgxcfej371g4ecepx9an78ngrke5ay9f8jtbgg")编码后的data为 0x70a082310000000000000000000000001c989a6229119edcda2088c9fc0bef9666a49b05
  • 调用muticall合约的函数function aggregate(address target, bytes[] memory calldatas) public view virtual returns (bytes[] memory)
results = muticall.aggregate(usdt_address,["0x70a0823100000000000000000000000016c85f8a7985d1a49b99e097d0b4217c5b5995f0","0x70a082310000000000000000000000001c989a6229119edcda2088c9fc0bef9666a49b05"])
  • 然后对返回结果进行abi解码

ABI编解码的方法各个SDK都有提供,请参考具体使用的sdk

Day4 Fluent小知识 - Fluent 如何导入多套助记词

1. Fluent 如何导入多套助记词

当我们想要分场景使用不同助记词管理私钥组以隔离风险时,是不是苦于找不到这样的钱包?其实Fluent已经提供了这样的功能,那怎么使用呢?👇

点击左上角钱包名称

在弹出框中点击右上角"+"

即可再次导入一套助记词

现在可以看到新导入的助记词了

Fluent 同时也支持多个网络,当前支持以太坊跟Conflux,以后还会陆续增加其他链的支持。

Day5 Fluent冷知识

  1. Fluent 相同助记词可以同时在conflux和ethereum使用,但是由助记词生成的钱包在同样的序号下使用的derive path不同,所以生成的私钥也是不一样的。 所以不要混用。
  • Conflux 下私钥生成的 dervie path 为 m’/44’/60’/0’/0
  • Ethereum 下私钥生成的 dervie path 为 m’/44’/503’/0’/0
  1. Fluent 没看到测试网络,Fluent是不支持测试网么?

其实Fluent是支持测试网的,只是由于普通用户通常不需要使用测试网,所以默认隐藏了起来,通过高级选项就可以打开测试网了。