全新solcJ改造方案,大家留言提建议
- Dominant language
- Java
- Stars
- 6
- Forks
- 11
- PR merge metrics
- No merged PRs in 30d
Description
# 全新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包名称为 \-\.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)
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.