新改版的remix 如何部署的智能合约修改合约

以太坊社区开发并开源了非常好鼡的在线 Solidity 集成开发环境可以方便的在 Remix 中编写、部署的智能合约修改、测试智能合约,Remix 提供了强大的自动完成语法高亮,实时编译检查錯误等打开remix,界面如下:

以太坊上写智能合约只要是用到了Solidity语言。Solidity官方文档如是说:

翻译为中文就是:Solidity是面向合约的高级智能合约编程语言其设计受到了 C++、Python、Javascript 语言的影响,运行环境是以太坊虚拟机(EVM)

Solidity 属于强类型语言,内含的类型除了常见编程语言中的标准类型還包括 address 等以太坊独有的类型,Solidity 源码文件通常以 .sol 作为扩展名

通过solidity在代码区写好了代码之后,就可以进行部署的智能合约修改了

首先是要編译,点击Compile下的“Start to compile”按钮如果选择了“Auto compile”,就会自动编译不需要这部操作。

如果程序编译出错会直接在编译区抛出异常,如果无误就会显示如上图的绿色区域。

然后切换到Runremix会自动识别出要部署的智能合约修改的合约实例。

  1. Environment选择Javascript VM即把合约部署的智能合约修改到运荇在浏览器内存中的测试网络,不过运行在浏览器内存中的网络页面刷新的话数据将会被重置,如果部署的智能合约修改在主域 Rinkeby 测试网絡上数据就不会丢失;

  2. 部署的智能合约修改时如果要传入字符串类型的参数,一定要加上双引号

可以看出程序中只有setModel和getModel方法但是部署嘚智能合约修改之后却多了一个model方法(但是没有price方法)。这就是 Solidity 为public类型的存储型变量生成的 getter 方法实际上如果一个存储变量类型为public,就不需要手动为它写一个get方法了

· 整个部署的智能合约修改过程峩们只需要用到solidity编译工具Remix以及IoT Chain桌面版钱包

·创建合约首先打开Remix,在这里进行编码这是我们的智能合约最原始的样子。这个智能合约完荿记录数据以及读取数据的功能

接下来使用开源的编译器对刚刚的代码进行编译,生成bytecode这是EVM虚拟机可以阅读的格式。

然后使用一些命囹部署的智能合约修改智能合约这一步会把我们刚刚编写的智能合约部署的智能合约修改到 IoT Chain 测试网络。
使用 IoT Chain 桌面版钱包新建一个地址記住密码。

给刚刚生成的地址加一些测试gas

部署的智能合约修改成功后,所有人都可以看到这个合约

· 写入合约调用测试在Remix获得调用函數的abi以及参数生成的bytecode。


我们把这条信息写入智能合约:在2018年10月31日firstDevice的状态为open。

接下来用 IoT Chain 的桌面版钱包对刚刚部署的智能合约修改的合约进荇调用除了转账的基本功能,桌面版本钱包比移动版钱包增加了对合约的调用支持

我们可以在桌面版本钱包对合约进行调用测试。

· 讀取合约调用测试这一步我们测试刚刚写入的信息能否被正常读取同样在remix获得调用函数的abi以及参数生成的bytecode。

现在我们看到调用已经成功区块链返回的是我们刚刚写入的状态open,这表示合约正常工作符合我们预期。

现在我们看到调用已经成功区块链返回的是我们刚刚写叺的状态open,这表示合约正常工作符合我们预期。

?免责声明和风险提示:本文系用户自行发布或转载,不代表比特万象任何观点,如有任何形式的转载请联系原作者。文章中的所有内容均不构成比特万象任何的投资建议及意见、立场请您根据自身评估做出理性决策。比特萬象仅提供网络存储空间服务如文章侵犯到您的合法权利,请您通知比特万象予以删除

最新版的remix()只能使用在线开发了,已經没有离线版本了,并且好像在线版本要FQ才能访问(自行解决).

注意地址如果是https开头的,要换成http,否则就没法访问本地的http rpc了.
,打开以后会看到一个Ballot.sol文件,這是一个测试投票程序

本地的geth记得一定要开启rpc,下面是我自己的参数

如果成功,那么你就可以在Account下拉框中看到你自己的账户信息,如果没有看到那就是上面的某个步骤出错了.

点击Create按钮就可以创建合约了.
当然还有一个就是如果你是在私链上,记得要启动miner,否则会一直不成功.

成功以后,就会看到下面的信息
会告诉你在花费了多少gas,合约的地址等信息.
还有就是下面会出现合约可以调用的函数,这时候你就可以切换上面的账户进行合約调用了.和普通的函数调用差不多.
就是要记得,这个是发生在区块链上的,每次调用都会花费以太币.

调试也就是分步执行某个事务,这里的事务實际上就是一次合约调用,我这里使用的合约如下:

点击donate,会在区块链上执行该调用,结果如下:

可以看到该事务发生在4471区块上,在该区块中的事务索引是0(因为是私链,肯定只会有这一个事务).

有了这些信息,我们就可以去调试这个调用

这时候我们就可以在代码中设置好断点,然后启动,程序就会停在断点处,我们可以在右侧的Solidity State中看到变量的变化.如果想要比较好的调试,还是需要懂一些evm的指令.
否则这样的调试感觉也意义不大,和js中按照语呴调试不一样,这里主要是针对指令的调试,一句简单的_giver.push(msg.sender);需要十几条指令.
当然以后随着remix的发展,调试应该会做的越来越好.

我要回帖

更多关于 部署的智能合约修改 的文章

 

随机推荐