图形化界面部署调用合约
在完成合约的编写与测试之后,通常需要将合约部署到测试网中,以验证合约是否正确,相关交易能否被网络接受。 IDE 提供一个通用的 UI 交互界面,只需简单的填写相关参数,就能一键部署合约,点击按钮就能调用合约的 public 函数,无须编写一行代码。
主要 UI 交换控件包括:
sCrypt按钮 (sCrypt Deploy)。点击可以从其它侧边视图切换到部署视图
本地合约窗口 (COMPILED CONTRACTS)。加载当前工作区
out目录下所有已经编译的 合约描述文件合约实例窗口 (DEPLOYED CONTRACTS)。列出已经部署成功的合约实例
部署合约配置视图。在该视图下填写部署合约的相关参数,包括:构造函数参数,合约锁定的 satoshis 余额,以及 有状态合约 的初始状态。
备注
IDE 同时支持部署到主网和测试网。你可以在 部署环境 中指定合约的部署网络。
设置私钥
部署合约到测试网需要先 设置私钥。如果检测到没有设置私钥,IDE 会自打开设置界面,提示设置测试网私钥。
部署合约
在代码编辑器上右键单击 Deploy Contract: Debug 菜单,将会编译合约,并自动打开部署合约配置视图。在配置视图中需要填写以下信息:
根据合约构造函数的各个 参数类型,填写 Constructor Arguments 下的各个参数
填写合约锁定 satoshis 余额,默认是
10000satoshis如果是不带
@state修饰器的有状态合约,还需要填写初始的状态然后点击 Deploy 按钮
部署成功后, 可以在 输出面板 看到 log 提示, 并在左边的合约实例窗口中会出现对应的实例,点击合约实例上的 View Tx 按钮,则可打开浏览器查看对应的交易。
调用合约
普通合约
点击合约实例上的构造函数,则可查看构造函数调用时的实参。点击 public 函数,右边则会出现该函数的调用视图。
对于调用普通合约,一般只需在 Public Function Arguments 下填写正确的解锁参数,点击 Call 按钮,就能调用该函数了。 如果调用成功,可以看到对应的交易, 失败则会打印出对应的错误。
合约调用成功后,我们可以看到如下信息:
调用合约时所填写的解锁参数的值
合约是否结束
合约剩余的 satoshis
调用合约产生的交易,点击 View Tx 按钮可查看交易。
有状态合约
调用有状态合约需要更多设置:
填写正确的解锁参数(同普通合约)。需要注意有 两种特殊类型 的解锁参数
添加交易输出,对于有状态合约,需要根据合约的限制添加相应的交易输出。目前支持的输出类型有四种:
输出类型 |
参数 |
|---|---|
有状态合约输出 |
|
P2PKH输出 |
|
OpReturn输出 |
|
Hex输出 |
|
设置交易相关参数
交易费用
Fee: 根据已经添加的交易输出,以及合约的 satoshis 余额自动计算得到。交易签名类型
SighashType: 默认用于计算交易原象 Preimage 的签名类型是 ALL,可根据合约使用交易签名类型来修改此值。nLockTime: nLockTime 是应用于在 unix 时间或块高度中指定的每个事务的参数,在此之前,该事务不能被接受到一个块中。
点击 Call 按钮调用合约
所有设置均完成后点击 Call 按钮,会发送这个合约调用交易到测试网。交易发送成功后,可以看到顶部显示合约余额及状态发生变化。 合约实例的 transactions 子项中增加了一个交易,并且可通过右侧的 View Tx 按钮在区块链浏览器上进行查看。另外,选中该交易子项时,被调用函数下的参数列表中会显示出此次调用时传递的各个实参。
重复调用
针对有状态合约,可以重复上面的步骤继续调用其 public 函数并观察其状态变更。可以在合约实例窗口中的 StateProp 条目上查看合约的最新状态。
如果调用合约失败, 在 输出面板 会打印出 启动调试器 的连接。CTRL + 单击链接启动调试器
备注
目前暂不支持合并其它输入来调用合约
调用失败
通常情况下,调用合约失败,将会在 输出面板 输出相应的信息,并生成 Launch Debugger 链接。 CRTL + 单击 链接将根据测试中的参数直接启动调试器会话。
有状态合约输出
有状态合约的输出包含两种格式的输出:
参数输入格式
所有参数类型
部署合约和调用合约都需要在视图中输入正确的参数。参数输入格式参照下表:
参数类型 |
输入格式说明 |
|---|---|
bool |
|
int |
十进制数字或十六进制数字,例如: |
bytes |
十六进制字符串, 例如: |
PubKey |
十六进制字符串, 同 |
PrivKey |
同 |
Sig |
十六进制字符串, 同 |
Ripemd160 |
十六进制字符串, 同 |
Sha1 |
十六进制字符串, 同 |
Sha256 |
十六进制字符串, 同 |
SigHashType |
十六进制字符串, 同 |
SigHashPreimage |
十六进制字符串, 同 |
OpCodeType |
十六进制字符串, 同 |
数组 |
每个元素分别填写 |
结构体 |
每个成员分别填写 |
特殊参数类型
Sig类型不需要手动填写。 IDE 默认使用设置中的私钥自动生成一个签名,作为该参数的默认值。如果你需要使用其它私钥进行签名,点击输入框右边的 Sig 按钮, 在弹出的输入框上输入正确的私钥。IDE 会根据输入的私钥生成新的参数值并自动更新该参数。
SigHashPreimage类型不需要手动填写。IDE 会根据你添加的输出,设置的交易相关参数,比如
SigHashType,nLockTime, 计算出交易第一个输入的 preimage 原象,并自动更新该参数。
其它功能
查看交易
合约实例窗口下 transactions 子项带有 View Tx 按钮, 点击可打开区块链浏览器查看该交易详情。
复制值
在合约实例窗口下选中某个函数,在参数列表上单击右键,会出现 Copy Value 菜单, 点击该菜单可以将参数的值复制到剪切板。
清除所有合约实例
点击该按钮删除所有合约实例。
删除单个合约实例
在合约实例上右键单击会出现 Delete 菜单, 点击该菜单可以删除该合约实例。

