Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

全新solcJ改造方案,大家留言提建议 #35

Open
HelloAldis opened this issue Feb 26, 2024 · 1 comment
Open

全新solcJ改造方案,大家留言提建议 #35

HelloAldis opened this issue Feb 26, 2024 · 1 comment
Assignees
Labels
enhancement New feature or request good first issue Good for newcomers

Comments

@HelloAldis
Copy link

HelloAldis commented Feb 26, 2024

全新solcJ改造方案

solcJ主要是包含如下1份java代码(源代码、单元测试等)和 40个solc二进制命令列表包括:

4种版本:

  • 0.4.25
  • 0.5.2
  • 0.6.10
  • 0.8.11

2种加密:

  • ecdsa
  • sm

3种平台:

  • linux
  • mac
  • win

2种cpu架构:

  • arm
  • amd64(x86_64)

solc二进制版本列表

  • 0.4.25

    • ecdsa
      • linux
        • arm
        • amd64
      • mac
        • arm
        • amd64
      • win
        • amd64
    • sm
      • linux
        • arm
        • amd64
      • mac
        • arm
        • amd64
      • win
        • amd64
  • 0.5.2

    • ecdsa
      • linux
        • arm
        • amd64
      • mac
        • arm
        • amd64
      • win
        • amd64
    • sm
      • linux
        • arm
        • amd64
      • mac
        • arm
        • amd64
      • win
        • amd64
  • 0.6.10

    • ecdsa
      • linux
        • arm
        • amd64
      • mac
        • arm
        • amd64
      • win
        • amd64
    • sm
      • linux
        • arm
        • amd64
      • mac
        • arm
        • amd64
      • win
        • amd64
  • 0.8.11

    • ecdsa
      • linux
        • arm
        • amd64
      • mac
        • arm
        • amd64
      • win
        • amd64
    • sm
      • linux
        • arm
        • amd64
      • mac
        • arm
        • amd64
      • win
        • amd64

命名设计

整体命名分group、artifactId、version,生成的jar包名称为 <artifactId>-<version>.jar

原始设计:

  • group:org.fisco-bcos
  • artifactId:solcJ
  • version进行细分,分为 0.4.25、0.5.2、linux-all等

新设计:

  • group保持不变,org.fisco-bcos
  • artifactId进行总和和细分,例如solcJ、solc-0.4.25、solc-linux等
  • version进行重新设计,从1.0.0开始

初步设计如下8种artifactId,build.gradel里面进行多target设计,要能支持灵活的扩展

  • solcJ-1.0.0.jar 包含所有solc,4个版本、2种加密、3个平台、2种架构,一共40个solc

  • solc-0.4.25-1.0.0.jar 包含0.4.25 solc、2种加密、3个平台、2种架构,一共10个solc

  • solc-0.5.2-1.0.0.jar 包含0.5.2 solc、2种加密、3个平台、2种架构,一共10个solc

  • solc-0.6.10-1.0.0.jar 包含0.6.10 solc、2种加密、3个平台、2种架构,一共10个solc

  • solc-0.8.11-1.0.0.jar 包含0.8.11 solc、2种加密、3个平台、2种架构,一共10个solc

  • solc-linux-1.0.0.jar 包含linux平台solc、4个版本、2种加密、2种架构,一共16个solc

  • solc-mac-1.0.0.jar 包含mac平台solc、4个版本、2种加密、2种架构,一共16个solc

  • solc-win-1.0.0.jar 包含mac平台solc、4个版本、2种加密、1种架构,一共8个solc

代码设计

不同版本代码区别:

  • 0.4.25 对比 0.5.2 有代码区别但是是修复bug,是可以进行合并成相同的
  • 0.5.2 对比 0.6.10 有代码区别 0.5.2 编译 optimize 默认false, 0.6.10 默认 true
  • 0.6.10 对比 0.8.11 有代码区别,具体如下:
    • 编译返回json结果不一样解析代码不一样
    • 0.8.11移除了mac对arm的支持 ,确认是bug,因具备罗赛塔转换macOS可以正常运行x86,所以没有报错
    • 0.8.11 移除了对interface的支持,因为0.8版本以上的solc没有interface选项了,
    • 0.8.11 optimize 默认false (还没合并)

设计如下:

  • 不同平台、不同cpu架构、不同加密主要是影响solc的不同二进制的加载保持现有设计即可
  • 针对SolidityCompiler和CompilationResult使用基类和子类方式进行区分和重用不同版本设计
  • Version类的设计需要调整,会影响console,因为console使用Version判断来未0.8以后得版本提供basePath支持
  • optimize 统一默认false

改造步骤

  1. 要把4个版本最新代码合并到dev分支 (@kyonRay
  2. 修改build.grale支持多target (@HelloAldis
  3. 合并多版本代码 (@HelloAldis
@kyonRay
Copy link
Member

kyonRay commented Feb 27, 2024

已同步代码到dev分支:#36

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

2 participants