虽然早年tezos经常是给人喷没必要,以及如今又被骂drama queen。然而这货带领本三脚猫了解起了区块链智能合约。
本来想基本去掌握下liquidity然而发生了OCaml大佬甩锅的事情,liquidity在他们repo里面妥妥把tezos换成了dune,本人也就放弃了。
转而用上了smartPy。现阶段这货只能在smartpy.io上混web-based IDE editor。本地还没有办法配置(不像Liquidity其实已经做到了)。相信用原始的Michelson是可以做到本地的,但是对于这门相对低阶的语言,本人实在没这水平去费神掌握好...
其实网上好的教材,目前这个时点真的不多(嗯,对,我说的是免费的。花钱的一般我也不会干的...)。
接下来是对于地址注册这个程序,找到的教程上就给一半解释,我把测试部分填好,于是就可以拿着跑通他了。
import smartpy as sp #支持tezos,目前应该还是开发早期,文档都不够傻瓜,要靠悟...
class NameRegistry(sp.Contract):
def __init__(self):
self.init(addressToName = sp.Map()) #初始化一个key——value字典,本人把这些都叫字典
@sp.entryPoint #允许传合同参数的标记
def register(self, params):
sp.setType(params.name, str)
self.data.addressToName[sp.sender] = params.name
@addTest(name = "Advanced Test")
def test():
# Create HTML output for debugging
html = h1("Name Registry")
firstOwner = sp.address("firstOwner-address-1234")
# Instantiate NameRegistry contract
c1 = NameRegistry()
c1.register(name = "ledger_ledger").run(sender = firstOwner) #sender就是这个合同的地址了,这个合同给他起名叫:ledger_ledger
html += c1.fullHtml()
setOutput(html)
#目前只能跑在smartPy.io的网站上哦。
线上效果:
备忘一下:转为michelson后本地部署教程中的Event Planner:
#: ./tezos-client originate contract mii for moneyPool transferring 1 from moneyPool running ~/mii.tz --init '(Pair {} "KT1HWk1LNaUvGpFxk2vCs4ZbA3gFnbMDnRkk")' --burn-cap 1.5