python智能合约编程_如何利用Python为区块链编写智能合约

本文介绍了如何使用Python的SmartPy库为区块链编写智能合约,涵盖条件语句(如`verify`)来防止无效输入,以及利用`for`循环执行多次操作。通过实例展示了如何检查参数不为零并执行相应的合约逻辑。同时,建议读者通过实践和阅读模板来熟悉SmartPy的语法和IDE。
摘要由CSDN通过智能技术生成

# Creates the “test” to simulate the Smart Contract call.

查抄条件的另一种要领是利用“verify”语句:

这将轮回求和运算,直到我们的变量“ i”的值大于30:

好。 此刻假设(出于教义的目标)我们必需在求和剧本中添加一条法则。思量到我们不能答允用户将零作为参数值通报给我们的智能合约。因此我们将不得不在代码中添加一个条件。在大大都计较机语言中,这可以通过添加“ IF”语句来完成。在SmartPy中没有什么差异:

self.data.result = params.op1 + params.op2

然后将下面的代码(从上一篇文章中)复制并粘贴到编辑器屏幕中:

这里有两个区别。首先请留意,此刻您要查抄要匹配的条件(op1差异于零)。 第二点(也是最重要的一点)是,此“verify”语句将使剧本执行因“异常”(错误)而遏制。 将上面的代码复制并粘贴到编辑器中(替换sp.if-sp.else布局)。 然后,将op1参数变动为0。运行剧本。看看你获得什么:

对此处显示的差异范例的条件表达式举办本身的尝试。请记着,实践是完美的。这些小课程的目标是使您越发熟悉SmartPy IDE和呼吁语法,因此我们未来可以做更多高级的工作。我还发起您仔细阅读在线编辑器随附的模板,因为这是一种提前发明新事物的好要领。

html += mySmartContract.myEntryPoint(op1 = 1, op2 = 2).html()

# Calls the “myEntryPoint” method passing parameters.

# Instantiates an object of class “MyClass”.

sp.for i in sp.range(0, 5):

self.data.i = 0

@sp.entryPoint

self.data.i += params.op1 + params.op2

def __init__(self):

class MyClass(sp.Contract):

with sp.whileBlock(self.data.i <= 30):

关于Python中的区块链智能合约编程的系列文章的第三部门将展示如安在SmartPy语言中利用条件表达式和轮回。

# Defines the class MyClass and its constructor.

self.data.result = params.op1 + params.op2

上面的代码只是测试第一个通报的参数(op1)是否便是零。假如为真,则剧本会将-1放入智能合约的存储功效变量中,而且将不会执行sum操纵(因为它位于“ else”语句中)。 在界说“ myEntryPoint”之后当即复制并粘贴代码。 留意缩进(必需为4个字符或TAB)。将挪用“ myEntryPoint”中的第一个通报的参数变动为0。单击“Evaluate script & run tests”来运行智能合约。您应该获得如下功效:

sp.verify(params.op1 != 0)

self.data.result = -1

self.data.result = params.op1 + params.op2

@sp.entryPoint

首先,通过将欣赏器指向https://smartpy.io/demo打开SmartPy 在线编辑器

# Outputs the result to screen.

此刻将通报的参数改回1。再次运行。您将看到此刻已经完成了总和,因为执行了“ else”语句中的代码。

在计较机编程中,轮回是在必然次数或已知条件下反复执行代码。 假设我们要执行5次求和运算。 我们必需利用凡是称为“ for-next”或“ do-while”的条件轮回。 在SmartPy中,这就是我们的要领:

def mySmartContractTest():

# Creates a string variable to build the output.

在开始之前,请单击“Evaluate script & run tests”按钮,以查抄一切是否正常。

sp.else:

@addTest(name = “myFirstSmartContractTest”)

迄今为止编写的每种计较机语言都具有一组通用的逻辑布局。 尽量它们大概互相差异,但它们都将答允措施员建设条件表达式和轮回,以基于某些评估执行操纵。

def myEntryPoint(self, params):

# Imports the SmartPy library.

setOutput(html)

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值