Libra測試網(wǎng)
- 從官方rust code可以編譯客戶端,接入測試網(wǎng)
- 客戶端支持賬戶/查詢/轉(zhuǎn)賬等基本操作,libra代幣可以自己mint,用來測試。
- 客戶端可以“創(chuàng)建”任意數(shù)量的賬戶,對應(yīng)的私鑰由一組助記詞派生,可以導(dǎo)入導(dǎo)出。
Libra賬戶
Libra賬戶包含 Move 模塊(modules)和Move 資源(resources)。
Move 模塊 , 包含代碼(類型和過程聲明),但他們不包含數(shù)據(jù)。模塊過程(procedures)編碼了更新區(qū)塊鏈的全局狀態(tài)的規(guī)則。
Move 資源 , 包含數(shù)據(jù)不包含代碼。每個資源值的類型都需要是在已發(fā)布的模塊中聲明過。
賬戶可以包含任意數(shù)量的Move資源和Move模塊。賬戶通過賬戶地址來標(biāo)識,地址是256位的值。用戶使用私鑰簽名后來聲明地址所有權(quán),賬戶的地址由公鑰Hash生成。
普通地址不是一個賬戶,不能用來接收代幣。賬戶需要顯式創(chuàng)建,并需要支付一筆創(chuàng)建賬號的費用。
當(dāng)一個賬戶在一個地址創(chuàng)建,默認(rèn)權(quán)限key是地址對應(yīng)的私鑰。用戶可以通過替換操作,修改權(quán)限key。
創(chuàng)建一個賬戶,本質(zhì)上即創(chuàng)建一個LibraAccount.T資源在一個指定地址
https://github.com/libra/libra/blob/master/language/stdlib/modules/libra_account.mvir#L164從Move實現(xiàn)看,可以創(chuàng)建一個Mykey合約賬戶模塊,并部署MykeyAccount.T資源到指定地址,完成合約賬戶創(chuàng)建。用來管理賬戶下的資產(chǎn)。
zengo多簽(2/2)賬戶demo
https://zengo.com/libras-next-frontier-a-non-custodial-wallet-with-no-private-key/
Move語言
Libra的設(shè)計目標(biāo)是可編程資源/資產(chǎn), 介于 BTC和ETH之間。
Move語言主要面向資產(chǎn)類數(shù)據(jù),并將資產(chǎn)設(shè)計為頂級資源。
Move 通過限制對資源的操作來防止不恰當(dāng)?shù)男薷?,從而提高資產(chǎn)的安全性。資源只可以Move移動, 而不能copy復(fù)制。
Move本身的設(shè)計還在開發(fā),現(xiàn)有的實例基于 中間語言Move IR。未來會有 Move 高級語言。
Move 的基本封裝單元是 “模塊”,模塊有點類似于以太坊中的 “智能合約”, 區(qū)別在于模塊只包含邏輯而沒有數(shù)據(jù)。
模塊中定義資源,并通過接口部署資源到賬戶。Libra 的交易(Transaction)中,也可以嵌入一段 Move 代碼。這段代碼不屬于任何模塊,是一次性執(zhí)行的,不能再被其他代碼調(diào)用。腳本中可以包含多個過程,通過 main 過程作為入口來執(zhí)行,在其中也可以調(diào)用其他模塊中的過程。
Move 的虛擬機(jī)是一個基于棧的虛擬機(jī),和 EVM 相似。每條指令也會計算一個gas, 耗光 gas 后代碼會停機(jī)。一個交易的代碼執(zhí)行符合原子性,要么全部執(zhí)行成功,要么一條也不執(zhí)行。
Move 完全不支持動態(tài)指派, 即所有的過程調(diào)用必須在編譯器確定(靜態(tài)),而不能運行時動態(tài)指派。好處是可以在編譯期,充分的分析驗證。因此,ETH/EOS動態(tài)合約調(diào)用即不能實現(xiàn)。
總體上,Move是一個更嚴(yán)格的適用于金融資產(chǎn)場景的語言,保證了安全性的同時也提供了一定的靈活性。比較務(wù)實。更像一個Domain language。
BTC, 可編程貨幣。
ETH, 可編程的去中心化應(yīng)用。
Libra, 可編程資源/資產(chǎn)。