这是一个实际的问题。我正在用Remix开发一个可靠的应用程序。需要花费大量时间的一件事是,当我对代码进行更改时,我必须在Remix中编译它,然后将ABI复制并粘贴到我的Java前端。
我的问题是,是否有办法使这一过程更加自动化?您能将HTML页面链接到ABI源代码以使流程运行更加顺利吗?这不是一个大问题,但它肯定会减缓发展过程中的一些事情。
谢谢!
发布于 2019-01-25 06:06:18
真诚地说,如果您以结构化的方式设计代码,这不可能成为一个主要项目。
这似乎很可能,你使用了不同的sw设计模式,为其已设计的混音。
在该范例中,ABI应该很少改变,因为它指定了代码的外部接口面。如果不是,这可能意味着您将您的系统结构更改为方法描述(如系统所见),以解决详细的实现问题--一般来说,在不带偏见的情况下,这是一个可能的可改进设计流程的标志。
在与web和/或物理设备交互的项目中,最稳定的设计是接口的设计,即ABI (在这种情况下),主要用于增强的并行设计(即其他设计人员可以在不等待您的部分结束的情况下继续进行项目的部分),但即使是为了测试工具的稳定性(考虑到持续集成)。ABI变更应该是一个重要的和共享的步骤,如果其他措施对项目不方便的话。
为了提供帮助,Remix为您提供了您需要的所有用户界面,以便首先修复ABI。您可以通过函数、测试和管理的内部UI,在第一次编译时不使用外部存根来完成您想做的任何事情。
在修复ABI (即方法和调用参数)时,您可以开始深入工作。
发布于 2019-01-25 05:10:33
您不应该在任何严肃的开发中使用Remix。它只适用于小型测试,因为正如您注意到的那样,它并不真正与其他程序集成。
您应该在Java项目中使用一个直接的Solidity编译器,这样您就可以在同一个IDE中编写自己的稳固性,并将其直接编译成字节码并获得ABI。我不知道有什么样的框架,但最有可能的是,即使是直接运行节点也有很多选择。例如,快速googling提供了这样的选项:https://github.com/ether-camp/solcJ和https://github.com/ethereum/ethereumj
如果您在同一个IDE中集成所有开发,至少在同一个环境(Java)中集成,您将得到更好和更快的结果。
发布于 2019-01-25 08:25:35
我建议不要在你的情况下使用Remix。创建一个包含所有文件夹和设置的集成项目。我正在使用一个工具- https://etherlime.readthedocs.io/en/latest/index.html。安装npm install -g etherlime后,您将无法运行etherlime init,它将创建一个包含联系人文件夹的项目结构,您可以在其中放置您的合同,还可以在其中放置一个带有deploy.js文件和示例的部署目录。就您的观点而言--当您对契约做了一些更改,并且需要再次编译它,而不仅仅是运行etherlime compile时,它将使用它的ABI创建一个./build文件夹,其中包含已编译的契约。你可以自动从那里得到它。
https://ethereum.stackexchange.com/questions/66099
复制相似问题