天天看點

區塊鍊研究實驗室|新嘗試更改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腳本。

區塊鍊研究實驗室|新嘗試更改Libra的move交易代碼

該腳本僅将一些代币鑄造(添加)到指定的帳戶中。 接收位址和金額,然後調用LibraAccount代碼即可完成此操作。

更新Move交易腳本

首先,關閉我們機器中的本地客戶機輸入出口。 我們需要這樣做,因為我們将需要重新編譯本地的Libra 區塊鍊,以進行我們将對mint.mvir腳本進行的更改

區塊鍊研究實驗室|新嘗試更改Libra的move交易代碼

是以我們在這裡做什麼,我們添加了兩個斷言,如果amount大于50且小于100,這将阻止我們的造币腳本添加代币。

之後,我們将儲存腳本,然後重新運作指令以啟動本地區塊鍊。

cargo run -p libra_swarm --  -s      

當我們的Libra區塊鍊線上時,讓我們測試腳本是否正常工作,運作一些指令。

區塊鍊研究實驗室|新嘗試更改Libra的move交易代碼

是以我們可以看到,現在我們的Libra區塊鍊隻允許造币價值在50到100之間。

就這樣。 我知道我們并沒有做非常複雜的事情,但是我們修改了本地Libra區塊鍊中的腳本,這是一個很好的開始。 希望大家都喜歡本教程,并且不要懷疑是否有任何問題!

本文轉載公衆号:區塊鍊研究實驗室

繼續閱讀