【话题】关于兼容以太坊

以太坊作为世界上第二大的区块链网络,也是最大的智能合约平台,并且许多开发者进入区块链世界通常是通过以太坊和他们的智能合约。所以很多区块链开发者都在使用以太坊智能合约以及相关的工具等。

接入以太坊的生态有利于PlatON的社区生态的发展,降低开发难度。

我们当前和以太坊不兼容的地方:

  1. 地址格式不同,PlatON采用bech32的地址格式,以太坊采用的是EIP55的地址格式。

  2. token单位不同,PlatON的Token单位为lat/von,以太坊的为ether/wei

  3. 部分接口的实现不同。如block.difficlty、miner.setCoinbase等函数在PlatON为fake实现,使用到这些函数的合约可能不适合在PlatON上运行,需要进行相应调整,不过这些函数很少使用

  4. RPC接口名不同,PlatON的接口名为platon_xxx,以太坊的接口名为eth_xxx

  5. 区块头时间戳不同,以太网为秒,PlatON为毫秒。

上述不同点导致以下兼容性问题:

  • 以太坊合约有少部分无法直接迁移到PlatON来使用。

  • 原有的以太坊钱包、DAPP不能直接接入到PlatON。

初步兼容计划:

  1. 地址上提供bech32/EIP55双格式的支持

  2. 调整因为共识机制不同导致实现不同的部分函数。

  3. rpc接口增加对以太坊接口的支持

  4. 在底层的预编译指令中增加对时间戳的兼容处理

除此之外,我们还有一些地方没有想清楚,比如说:

  1. 单位是否需要增加对ether/wei的兼容处理

  2. 地址格式是否需要同时保留bech32和EIP55,仅支持EIP55会不会更好

大家还有其他更好的建议吗?

5 Likes

期待听取到更多来自于社区的声音 :smile:

应该不需要做到100%兼容吧?
比如Token单位, 以太坊上的合约中有ether或wei,就应该在编译阶段就提示用户错误, 避免用户把实际上的lat/von当作ether/wei,这样是不是好一些?

欢迎在GitHub上进行讨论 https://github.com/PlatONnetwork/PlatON-Go/issues/1784