新嘗試更改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。

這個命令需要幾分鐘,所以要有耐心,如果一切順利,我們必須看到以下的輸出

建立帳戶、造幣和交易

我們要做的第一件事是建立兩個帳戶(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區塊鏈中的指令碼,這是一個很好的開始。 希望大家都喜歡本教程,並且不要懷疑是否有任何問題!

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;