简介希望将来阿蒂斯atis币官网能够得到长足稳定的发展,为社会发展及人们的需求做好服务。
本文是一个非常实用的分步教程,其目的是向j开发人员(特别是)展示一种非常简单的与区块链智能合约进行交互的方式。了解使用库与区块链......
简介
本文是一个非常实用的分步教程,其目的是向j开发人员(特别是)展示一种非常简单的与区块链智能合约进行交互的方式。了解使用库与区块链进行交互的难易程度。
环境要求
我们将使用t区块链。为了使我们的j代码与现有的、部署的智能合同交互,我们需要来自tr的tzosj库。 该库有两个版本,一个是专门为a应用程序开发编写的版本(tj_sdk),另一个是为使用e ide编写的通用j应用程序(tj_j)编写的,我们将在这里使用。 无需下载整个库源代码。 仅.. jar文件就足够了。 作为我们的开发ide,e将是首选。
文章目标
我们要调用的智能合约是一个简单的客户基本注册,可以在t 上找到,地址如下:ktkmgtztuwjyt
您可以通过t之类的t区块浏览器之一轻松查看智能合约的详细信息。或通过使用b-.工具。 还有另一种选择是与sp资源管理器检查智能合约。请记住,记住,要指定一个测试网服务器,例如://-.-.。
我们的智能合约称为“客户”,它具有四个入口点(或方法):c,c,和b。基本上都是插入,删除,转移资金和更新基本功能。这是仅为教育目的而创建的。它的作用是在t区块链的存储中维护一个“客户”列表。
调用方法
tj可能是当今调用t智能合约的最简单方法之一。 基本上,我们的调用可以通过一个命令完成:
jsono o = .cep(
.pkh(), "ktkmgtztuwjyt",
, , "", "", "c",s[]{"",
"","b",""});
上面的代码将一个新客户b的余额加为?,其id为,电话号码为,从而为该客户添加了一个新客户。这是通过调用cep方法完成的,该方法基本上需要与普通的t .()方法相同的参数,但具有一些额外的功能:智能合约入口点名称和包含预期入口点参数的s a
请一步一步来!
如果您还没有完成,请下载并安装e。打开它。第一步是创建一个新项目,选择f-&;-&;选项,如下所示:
下一步是选择项目类型:选择g p:
将新项目的名称设置为“ sc”,然后单击“完成”按钮。等待e构建项目文件结构。现在,我们将创建一个m类,以便我们可以运行和测试项目。右键单击项目名称“ sc”,然后选择n-&;c:
然后,指定“m”作为新类的名称,并确保选中“ m(s [])”创建框。然后单击“完成”按钮:
您会注意到m类已创建。右键单击m ,然后选择r -&; j a。 这只是为了配置从现在开始单击按钮时项目的运行方式:
在控制台中,您将看到项目已成功运行,但是当然还没有任何反应。因此,您将看到“”消息:
现在我们将添加tj库jar文件。 转到t.r 存储库并下载文件----...
在文件浏览器上,复制----...文件(ctrl + c)。
回到e,单击项目名称,然后使用ctrl + v粘贴。
该文件将显示为已添加到项目结构中:
下一步是将jar添加到项目的构建路径中。右键单击项目浏览器中的库文件,然后选择选项 b p-&; ab p ( b p -&; c b p):
选择库文件,然后单击“应用并关闭”按钮:
现在我们已经准备好一切,让我们首先构建一个t钱包:
上方(左侧)的红色“ x”提醒我们,需要导入类,才能使我们的代码了解什么是tw:
现在添加一些控制台输出,以检查是否成功创建了我们的钱包。 我们将打印有关此信息:钱包的公钥哈希(t地址),其助记词和当前余额。 添加s..命令后,运行项目,您将获得类似以下内容(检查控制台):
好! 我们有一个功能齐全的t钱包。现在我们可以调用客户t智能合约了。
关于智能合约的一点事....
我们将使用sp.在线ide在t区块链测试网上创建并部署了我们将要使用的客户智能合约。检查下面的智能合约源代码:
# isp .
# dc .
c(.c):
____():
.( = .())
# dc.
@._
c(, ):
# v .
.(. != "")
.(. != "")
.(.n &; )
# d .
._(., .ts)
._(., .ts)
._(.n, .tn)
._(., .tm)
# d , m.
= .(=.,
n=.n, =.)
# a m (
' ).
..[.] =
# dc.
@._
c(, ):
# v .
.(. != "")
# d .
._(., .ts)
# r m.
..[.]
# db.
@._
b(, ):
# v .
.(. != "")
# d .
._(., .ts)
._(., .tm)
# u.
..[.]. = .
# d .
@._
(, ):
# v .
.(.f != "")
.(.t != "")
.(. &; .() )
# v .
.(. &;= ..
[.f]. )
# d .
._(.f, .ts)
._(.t, .ts)
._(., .tm)
# u.
..[.f]. =
..[.f]. - .
..[.t]. =
..[.t]. + .
# c ,
sp. ide.
@._( = "c")
():
# i c c.
cc = c()
# d .
= ._()
# a .
+= cc
# i, '
c.
# t ' .
+= cc.c(
="",="d",n=,=.())
+= cc.c(
="",="e",n=,=.())
+= cc.c(
="",="f",n=,=.())
# r .
+= cc.c(="")
# u' .
+= cc.b(
="",=.())
# t .
+= cc.(
f="", t="", =.())
此处显示的sp智能合约的源代码仅用于说明目的,我们不需要再次编译和部署它。它已经位于t区块链测试网上,地址为:ktkmgtztuwjyt
现在我们拥有从j调用合同所需的一切。首先我们将使用智能合约的“ c”入口点添加新客户。让我们考虑客户的名字“b”,他的id将是“ ”,电话号码是“ ”。 b的余额为英镑(万个)。 因此,我们的智能合约调用命令将如下所示:
jsono o = .cep(
.pkh(), "ktkmgtztuwjyt",
, , "", "", "c",s[]{
"", "","b",""});
首先,我们需要通知tj我们将使用ttn(智能合约实际发布的地方)。我们还需要设定交易金额和费用。这是用下面的j代码完成的:
// c .
.p(“://-.-.");
// s .
bd=bd(“”);
bd=bd(“.”);
// c .
jsono o = .cep(
.pkh(),
“ktkmgtztuwjyt”, , ,
“”, “”, “c”,
s[]{“”, “”,”b”,”"});
// p .
s h = (s) o.("");
s..("oh : " + h);
复制代码并将其粘贴到我们的m类中,使其保持如下所示:
请注意,要使此调用正常工作,您首先需要注资并显示您的t帐户。 否则,您可能会收到如下错误:
t:‘’‘
.-pbm..__’
运行项目! 如果一切正常,您将获得控制台中显示的操作哈希:
这表明我们已成功将c事务发送到t 区块链(因为我们有一个操作哈希)。 现在让我们检查交易是否被t区块链接受。我们将使用tb资源管理器执行此操作。在您喜欢的浏览器中打开://.,首先,在屏幕的右上角,将“ ”更改为“ ”(与相同)。 然后,将从j执行中获得的操作哈希值粘贴到搜索框中,然后按“ ”键:
这将显示我们智能合约的结果以及操作细节。通过单击“”,您将能够检查从我们的j代码传递到t区块链的参数:
参数:
l (l (l (p (p (p"") "b") )))
这是我们从j应用程序调用生成的m格式的参数。部署时,t智能合约以m 语言编写,它们期望以这种格式发送的输入参数。使用tj库的好处之一是它可以实时生成m格式的参数,而您不必担心它是如何完成的。
到目前为止,我们可以确保正确调用了智能合约,传递了参数并且操作已被t区块链接受。现在我们要做的最后一件事是检查是否将新客户b插入了智能合约的存储中。为此,我们将使用b-.工具。 只需打开浏览器并将其指向://-.。 在搜索字段中输入我们的客户智能合约的地址(ktkmgtztuwjyt),将网络更改为,然后按e:
果将是曾经发送到智能合约地址的所有操作的列表以及智能合约存储的当前状态。您将在此处检查从j传递过来的参数,以及它们是否正确保存在存储器中:
更进一步
您可以尝试智能合约的其他入口点,例如c,和b。切记始终检查每个入口点所需的参数数量。
运行代码时,如果遇到j错误,则表示未发送事务。在这种情况下,您必须重新检查参数,其顺序,帐户余额,费用以及您正在使用的网络(主网或测试网)。此外另一方面,如果您曾经获得过操作哈希,则意味着您的j应用程序已成功将交易发送到了区块链。但是,您还必须检查可能的与区块链相关的错误。在这种情况下,当您使用tb e进行检查时,它将显示带有鲑鱼色背景的错误,这意味着在区块链上下文中发生了错误(例如,传递的参数数量错误,参数m格式错误,甚至合同未接受的条件-例如:您调用了转移入口点,但“发件人”客户没有足够的资金可发送)。还要检查l和l参数。
结论
开发人员使用区块链智能合约从未如此简单。特别是t,提供了许多出色的工具和无数的计算机语言库,可促进与大多数系统的集成。tj库通过提供一种易于使用的cep方法进行创新,该方法可以即时创建m格式的参数。它具有j开发人员在与区块链无缝交互的应用程序开发中蓬勃发展所需的所有工具。