售前客服二维码
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!
迈克尔逊简介:泰索斯的脚本语言
迈克尔逊无疑是智能合同中最令人兴奋的编程语言之一。这是一种基于堆栈的严格类型语言,编写智能契约可以确保区块链的安全。迈克尔逊可与以太网智能契约的字节码相比,但它更可读、更安全、更强大。所有高级语言——,如SmartPy、Ligo或Lorentz——,都被用来为Tezos编写智能合同,最终可以编译成迈克尔逊语言。
在第一篇文章中,我们将尝试使用迈克尔逊语言来理解“基于堆栈”的含义,并编写一些非常简单的智能契约。这篇文章主要是为编程或Tezos开发的初学者写的,但是想了解更多关于Michelson的中级程序员也可以在这里找到有用的信息。我们将使用烘焙公司开发的Jupyter内核在Jupyter笔记本中编写迈克尔逊代码。如果你想知道代码是如何工作的,你可以在每个部分找到一个链接。
让我们写一些代码。
堆
要理解迈克尔逊是如何工作的,堆栈是需要正确理解的主要概念之一。每份迈克尔逊合同都是一份相互遵循的指令清单。这些指令按照确切的顺序排列,并按照书写的顺序执行。
每条指令都以某种方式操纵堆栈。把它想象成一堆数据。您编写的指令将影响堆中的数据。例如,您可以在堆上添加两条数据,删除最上面的一条数据,将另一条数据放在最上面,传输一些令牌,等等。堆栈以先进先出的方式工作:如果您想访问不在堆栈顶部的数据,您必须首先处理其上的数据。
使用迈克尔逊编码时,您必须记住三个主要概念:
新数据被放在堆栈的顶部。
只有当数据位于堆栈顶部时(或者在某些操作中位于第二个位置,如下所述),才能访问堆栈中的数据。
数据处理的顺序是从堆栈的顶部到底部。
让我们看一个例子。
推送操作
如果您想在堆栈顶部添加一条数据,您将调用PUSH操作。它是这样工作的:
在这一点上,应该注意到堆栈中可能已经有数据,在这种情况下,新值将被放在它们的上面。这就是你如何在迈克尔逊推出新数据:
推送值类型值
例如,如果你想推一个整数,你将写push int 2,对于一个字符串,你将写PUSH字符串“tezos”。
迈克尔逊智能契约结构
迈克尔逊的智能合同展示了一个由三部分组成的简单结构:
预期参数的类型。
存储的类型。
迈克尔逊密码。
转换为如下代码:
参数参数类型;
存储存储型;
代码{
.
{}
除了这种结构,在用迈克尔逊语言编写智能合同时,你还必须记住两条规则:
1.执行代码时,自动将包含参数和内存的对推入堆栈。应该记住,如果——没有参数,它将被单位代替。
2.代码必须始终返回一对,其中包含操作列表和(更新的)存储(列表的存储(操作))。当堆栈中只剩下这样的对时,执行停止。
一份简单的米歇尔索智能合同
既然我们已经理解了PUSH和Michelson中智能契约的结构,让我们写一个。
对于此合同,我们将编写一个“Hello world”合同,并将一个字符串保存到存储中:
执行此代码后,会发生以下情况:
1.参数单位表示传递的参数属于单位类型(基本上没有参数)。
2.存储字符串表示合同的存储类型是字符串。
3.DROP是一个用于删除堆栈顶部任何内容的操作代码。正如我们之前所说的,带有参数和存储空间的对将在开始时自动包含在堆栈的顶部。我们不打算使用它,但我们可以删除它。
4.PUSH将一个值放在堆栈的顶部,这里是字符串“Hello world”。
5.NIL是一个操作码,它将指定类型的空列表(在此操作)添加到堆栈顶部。
6.将两个元素放在堆栈顶部,创建一个包含这两个元素的新对,然后将其推回堆栈。
注意:每个指令以分号结束(最后一个指令是可选的)。
添加一个整数并保存结果
让我们介绍一个新的操作:添加。你可能已经猜到了它的作用。——增加了两个值。
下面是一个简单的合同,演示了它是如何工作的:
让我们看看每个操作,看看堆栈中发生了什么:
参数单位:同样,我们没有使用任何参数,所以我们传递了一个单位。
存储整数:这一次,我们将整数类型的值保存到内存中。
丢弃:我们不需要初始对,所以我们可以删除它,为我们实际需要的值腾出空间。
PUSH int 2;PUSH int 3;在这里我们需要注意这个顺序,这是非常重要的。当int 3被按下时,int 2将位于堆栈的底部。在加法的情况下,顺序不是很重要,但是如果你想做减法,你必须按正确的顺序推进它们。
加法和结对有相同的原理。你取栈顶的前两个元素,从中获取一个值,然后把它推回到栈中。加法将两个数字相加。应该注意的是,这些数字必须都是相同的数字类型(例如,不能将整数和nat加在一起)。
和以前的合同一样,我们推出了一个空的操作列表。
创建一对,包括操作列表和我们需要停止执行合同的新存储。
结论
迈克尔逊语言的复杂性经常被高估。这可能是因为目前还没有适合初学者的教程,而且网上提供的文档技术性很强,初学者很难阅读。这就是为什么我决定自己完成学习迈克尔逊的过程,用困难的文档创建一系列教程。我希望这些教程更容易理解和使用。
要理解和欣赏特佐斯区块链的独特性,使其更安全、更有用,关键是要理解迈克尔逊。
在下一节中,我们将继续深入研究迈克尔逊。我们将编写一些简单的智能合同,并探索由烘焙坏团队创建的令人惊叹的Jupyter笔记本,它使我们能够编写迈克尔逊代码,并准确地知道正在发生什么。
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!