新尝试更改Libra的move交易代码

Libra是Facebook最新推出的一种技术。它看起来很有前途,所以我们正在探索和学习我们可以用它做什么!

我们将使用Move(Libra智能合约的编程语言),看看能不能做几笔交易。

概述

我们将要实现什么功能:

1. 在本地计算机上启动Libra Validator。


2. 在本地计算机上启动Libra CLI。


3. 在我们本地的Libra区块链中进行一些交易。


4. 更新一些MOVE代码,看看Libra区块链是如何工作的。

我读了很多帖子,它们只是向我们展示了如何启动本地Libra验证程序和本地Libra客户端,但是我找不到如何更改Move代码的某些交易的任何信息。

因此我决定对代码进行一些更改,以了解它在move中如何处理交易代码。我们不会做一些非常花哨的事情,只会给move智能合约增加一些验证。

本教程的第一部分可能与Libra官方网页(https://developers.libra.org/docs/my-first-transaction)非常相似。最后一部分是我们在该博客中所没有做的事情。

如果你有一些疑问或不理解本博客的某些命令或章节,强烈建议查看Libra开发者的官方页面,以便更多地了解我们在这里所做的事情。

我们需要什么?

我将在一台机器上操作,并且需要安装以下工具:

1. apt get或yum(sudo apt get update-it)


2. git(sudo apt get install git)


3. curl(sudo apt install curl)


4. zlib(apt get install zlib1g dev)


5. openssl dev package(apt get install libssl dev)

首先让我们复制Libra核心存储库

git clone https://github.com/libra/libra.git

之后,让我们访问libra文件夹并在脚本文件夹中运行dev_setup.sh。

cd libra


./scripts/dev_setup.sh

这将安装多个工具(Go,protoc,CMake),以使我们的Libra Core和Libra Client在我们的计算机上运行。

此后,我们将需要注销并再次登录到我们的计算机中,这是因为我们需要更新PATH变量来运行Cargo,然后执行此操作,我们将自动更新它。

现在,我们将开始本地Libra区块链(它将不会连接到Libra测试网络-Testnet,将仅是本地的)。让我们运行以下命令。

cargo run -p libra_swarm — -s

仅供参考,cargo run–p libra_swarm负责在我们的机器中启动验证程序节点,–s参数只负责指示我们是否要启动libra cli。

这个命令需要几分钟,所以要有耐心,如果一切顺利,我们必须看到以下的输出

新尝试更改Libra的move交易代码

创建帐户、造币和交易

我们要做的第一件事是创建两个帐户(0和1),为此我们将运行命令:

a create

这将给我们这样的输出。

Created/retrieved account #0 address 
522b562a0dbb9e88e2607425512f92d92e3aeb696f91468807a0f86743a75254

再次执行

a create

产生类似的输出。

Created/retrieved account #1 address 
091a2e7f02305c7d780f67e869470580701dd5d74c064c943d25052352be1173

现在让我们来造币,实际上这项服务只在testnet中提供,它的主要功能是向帐户中添加代币,因此在生产区块链中公开是有意义的。

运行以下命令在第一个帐户中添加一些代币。

Command: a mint 0 100
Response: Mint request submitted

要检查帐户余额,请运行:

Command: query balance 0
Response: Balance is: 100.000000

对于#1 account

Command: query balance 1
Response: Balance is: 0.000000

现在我们进行交易,将50个代币从帐户0转移到帐户1

Command: transfer 0 1 50
Response: Transaction submitted to validator

现在检查余额,就像我们在上一步中检查交易是否完成一样。

Command: query balance 0
Response: Balance is: 50.000000
Command: query balance 1
Response: Balance is: 50.000000

Move交易脚本

我们需要首先确定MOVE 交易脚本的位置。 从客户端调用此脚本是为了与区块链进行交互(造币,交易)。

这些脚本被称为Libra universe的智能合约。

因此,这些脚本位于:〜/ libra / language / stdlib / transaction_scripts,这里将看到五个脚本。

1. create_account.mvir
2. mint.mvir
3. peer_to_peer_transfer.mvir
4. placeholder_script.mvir
5. rotate_authentication_key.mvir

现在让我们打开mint.mvir脚本。

import 0x0.LibraAccount;
import 0x0.LibraCoin;
main(payee: address, amount: u64) {
   LibraAccount.mint_to_address(move(payee), move(amount));
   return;
}

该脚本仅将一些代币铸造(添加)到指定的帐户中。 接收地址和金额,然后调用LibraAccount代码即可完成此操作。

更新Move交易脚本

首先,关闭我们机器中的本地客户机输入出口。 我们需要这样做,因为我们将需要重新编译本地的Libra 区块链,以进行我们将对mint.mvir脚本进行的更改

import 0x0.LibraAccount;
import 0x0.LibraCoin;
main(payee: address, amount: u64) {
  assert(copy(amount) > 50000000, 0);
  assert(copy(amount) < 100000000, 1);
  LibraAccount.mint_to_address(move(payee), move(amount));
  return;
}

所以我们在这里做什么,我们添加了两个断言,如果amount大于50且小于100,这将阻止我们的造币脚本添加代币。

之后,我们将保存脚本,然后重新运行命令以启动本地区块链。

cargo run -p libra_swarm —  -s

当我们的Libra区块链在线时,让我们测试脚本是否正常工作,运行一些命令。

Command: a create
Response: Created/retrieved account #0 address 957fce46498beb7be02aed705ba489717216beb033177f66ec825c3df7263eec
Command: a mint 0 1
Response: Mint request submitted
Command: query balance 0
Response: Balance is: 0.000000
Command: a mint 0 51
Response: Mint request submitted
Command: query balance 0
Response: Balance is: 51.000000
Command: a mint 0 100
Response: Mint request submitted
Command: query balance 0
Response: Balance is: 51.000000
Command: a mint 0 99
Response: Mint request submitted
Command: query balance 0
Response: Balance is: 150.000000

所以我们可以看到,现在我们的Libra区块链只允许造币价值在50到100之间。

就这样。 我知道我们并没有做非常复杂的事情,但是我们修改了本地Libra区块链中的脚本,这是一个很好的开始。 希望大家都喜欢本教程,并且不要怀疑是否有任何问题!

关键词: Libra  数字货币  区块链  

该内容来自于互联网公开内容,非区块链原创内容,如若转载,请注明出处:https://htzkw.com/archives/28445

联系我们

aliyinhang@gmail.com