Libra测试网
- 从官方rust code可以编译客户端,接入测试网
- 客户端支持账户/查询/转账等基本操作,libra代币可以自己mint,用来测试。
- 客户端可以“创建”任意数量的账户,对应的私钥由一组助记词派生,可以导入导出。
Libra账户
-
Libra账户包含 Move 模块(modules)和Move 资源(resources)。
Move 模块 , 包含代码(类型和过程声明),但他们不包含数据。模块过程(procedures)编码了更新区块链的全局状态的规则。
Move 资源 , 包含数据不包含代码。每个资源值的类型都需要是在已发布的模块中声明过。
账户可以包含任意数量的Move资源和Move模块。 -
账户通过账户地址来标识,地址是256位的值。用户使用私钥签名后来声明地址所有权,账户的地址由公钥Hash生成。
-
普通地址不是一个账户,不能用来接收代币。账户需要显式创建,并需要支付一笔创建账号的费用。
-
当一个账户在一个地址创建,默认权限key是地址对应的私钥。用户可以通过替换操作,修改权限key。
-
创建一个账户,本质上即创建一个LibraAccount.T资源在一个指定地址
https://github.com/libra/libra/blob/master/language/stdlib/modules/libra_account.mvir#L164 -
从Move实现看,可以创建一个Mykey合约账户模块,并部署MykeyAccount.T资源到指定地址,完成合约账户创建。用来管理账户下的资产。
-
zengo多签(2/2)账户demo
https://zengo.com/libras-next-frontier-a-non-custodial-wallet-with-no-private-key/
Move语言
-
Libra的设计目标是可编程资源/资产, 介于 BTC和ETH之间。
-
Move语言主要面向资产类数据,并将资产设计为顶级资源。
-
Move 通过限制对资源的操作来防止不恰当的修改,从而提高资产的安全性。资源只可以Move移动, 而不能copy复制。
-
Move本身的设计还在开发,现有的实例基于 中间语言Move IR。未来会有 Move 高级语言。
-
Move 的基本封装单元是 “模块”,模块有点类似于以太坊中的 “智能合约”, 区别在于模块只包含逻辑而没有数据。
模块中定义资源,并通过接口部署资源到账户。 -
Libra 的交易(Transaction)中,也可以嵌入一段 Move 代码。这段代码不属于任何模块,是一次性执行的,不能再被其他代码调用。脚本中可以包含多个过程,通过 main 过程作为入口来执行,在其中也可以调用其他模块中的过程。
-
Move 的虚拟机是一个基于栈的虚拟机,和 EVM 相似。每条指令也会计算一个gas, 耗光 gas 后代码会停机。一个交易的代码执行符合原子性,要么全部执行成功,要么一条也不执行。
-
Move 完全不支持动态指派, 即所有的过程调用必须在编译器确定(静态),而不能运行时动态指派。好处是可以在编译期,充分的分析验证。因此,ETH/EOS动态合约调用即不能实现。
-
总体上,Move是一个更严格的适用于金融资产场景的语言,保证了安全性的同时也提供了一定的灵活性。比较务实。更像一个Domain language。
BTC, 可编程货币。
ETH, 可编程的去中心化应用。
Libra, 可编程资源/资产。
网友评论