以太坊连载(24):集成开发环境(IDE)Mix介绍
MixIDE Mix旨在作为开发者帮你创建,排错和部署合约及去中心化应用(后端和前端的合约)警告 – 有很多OS X上关于Mix的crash-at-boot 事件报告。这个事件是Heisenbug,我们已...

IDE Mix旨在作为开发者帮你创建,排错和部署合约及去中心化应用(后端和前端的合约)
警告 – 有很多OS X上关于Mix的crash-at-boot 事件报告。这个事件是Heisenbug,我们已经跟踪了一两个月。我们现有的最佳变通方案是用排错配置,像这样:

警告 – 正在研究一个Mix的替代物,叫做Remix。如果你在Mix经历了事件,在Remix更成熟之前,你最好寻找替代方案。
从创建一个新项目开始,它包括
合约
html 文件
JavaScript 文件
style 文件
image 文件
你可以用项目来管理去中心化应用的创建和测试。项目会包括与后端和前端相关的数据以及和你的场景(区块链互动)相关的数据,用来排错和测试。相关文件 会被创建并自动保存到项目目录中。
去中心化应用的开发始于新项目的创建。在“编辑”菜单创建一个新项目。进入项目名称,比如 “等级”,选择项目文件路径。
一个新项目默认包含一个合约,“Contract”用于使用Solidity语言在区块链后端开发,“index.html”用于前端。查看Solidity教程或参考。 编辑空的默认合约“Contract”,比如:

查看Solidity教程寻求帮助,以solidity编程语言开始。
保存变动
编辑前端html文件 选择默认index.html文件并输入以下代码

有可能添加很多合约文件和HTML, JavaScript, css文件
场景可以用于检测合约和为合约排错。
一个场景就是一个本地区块链,区块可以在这里被挖矿而不需要工作量证明 –否则测试会很慢 ;)
一个场景包含一系列交易。通常,一个场景以去中心化应用的合约创建场景开始。 此外,进一步的交易会被添加测试并对去中心化应用排错。场景可以修正,例如,移除交易。注意如果要修正一个场景使之有效,需要进行重建。可以通过JS API用JS进行进一步测试。
万一打不开,可以点击F7或Windows > 展示右侧或主界面右上方的排错按钮来进入场景和排错器窗格。
第一次启动Mix的时候,会创建一个空场景,比如,不包含任何交易。添加账户并命名为“MyAccount”,设置初始余额为1以太币。点击确认。将场景重命名为“Deploy”。
实际上我们想做很多测试。编辑初始区块参数,将初始账户余额设置为1000 以太币。重建场景使它变得高效。
每次交易被修正或账户被添加的时候,场景必须重建以修正使之高效。注意如果一个场景重建,网络前端(本地存储)可能也需要重置(Mix不会自动操作)。
我们发送一些以太币给Bob。创建另一个名为“Bob”的账户,余额为0。在场景窗格创建一个新交易。点击“Add Tx…”,发送300以太币给Bob。添加一个区块。
创建一个新场景或从一个场景开始,和几个你先复制的交易
重命名场景
通过指定要被移除的交易来修正场景
重建场景
一个合约调用就是一个功能调用。这不是交易, 因为合约调用不会改变状态。合约调用不是区块链的一部分,但是出于实用和用户体验设计的原因,在交易的同一功能层次展示调用很方便。JS图标提醒你这不是个交易而是个调用。要展示/隐藏调用,点击菜单里的场景 –> 展示调用。
这个面板区块在区块链面板下面,场景视图中。一旦区块链被运行,这个面板会展示区块链状态。
说到状态,我们意味着所有账户余额(包括合约和正常账户),存储(所有部署合约的全局变量)。这个面板的内容不是动态的,它取决于在区块链面板上选择的交易。这里展示的状态是执行所选择交易的状态结果。

在那种情况下,部署了2个合约,选择的(testCtr的部署)是最后一个。状态视图展示了TestCtr和BasicContract的存储。
使用交易窗格
交易窗格使你能够探索交易接收,包括
输入参数
返回参数
事件日志
要显示交易浏览器,点击每个交易右侧的倒三角图标,会扩展出交易详情:

然后你可以复制剪贴板上的交易内容,编辑当前交易(然后你要重新运行区块链), 或为交易排错。
Mix将以下对象暴露在全局窗口的语境下
web3 – 以太坊JavaScript API
合约:合约对象集合。钥匙代表合约名称。值是包含以下属性的对象:
合约: 合约对象实例 (像在web3.eth.contract里一样创建)
地址: 上一个部署状态的合约地址(查看下面)
界面: 合约ABI
查看JavaScript API 参考了解更多信息。
如果合约名字是“Sample”,功能名字是“set”,有可能进行一个交易来调用 “set”,方法是写:

如果调用可以进行,可以通过写以下命令完成:
Mix支持Solidity和组件级别合约代码排错。你可以在两个模式中切换,检索你所需要的相关信息。
在任何执行阶段,以下信息都可用:
虚拟机堆栈 – 查看黄皮书获取虚拟机操作指南描述 调用堆栈 – 合约调用到另一个合约时会生长。双击堆栈框架来查看机器在框架里的状态。 存储 – 与合约相关的存储数据 内存 – 分配到这个执行点的机器内存 调用数据– 交易或调用参数
交易详情扩展后,你可以转换到排错视图,点击“交易排错”按钮。