为了实现上一篇文章中说的“计数器合约”,需要介绍BSV上的高级语言sCrypt,并解释如何用sCrypt实现这个合约。
sCrypt和BSV脚本的关系就像C语言和汇编语言的关系。通过sCrypt VS Code插件,可以把sCrypt编译成BSV脚本语言,还可以在VSCode中进行调试。
sCrypt语言实现的“计数器合约”代码如下。一会我们会详细分析。
contract Counter {
public function increment(bytes sighashPreimage, int amount) {
Tx tx = new Tx();
require(tx.validate(sighashPreimage));
int len = length(sighashPreimage);
bytes hashOutputs = sighashPreimage[len - 40 : len - 8];
bytes scriptCode = Util.readVarint(sighashPreimage[104:]);
int scriptLen = length(scriptCode);
int counter = unpack(scriptCode[scriptLen - 1