内容纲要
总结
- 智能合约是核心
- 智能合约是一个代理程序, 我们可以开发和部署到区块链上
- 智能合约可以访问节点上存储的键值对数据库, 我们通过智能合约来修改数据库, 区块链来执行和记录历史记录.
- 百度开放网络上限制比较多
- 普通用户也必须实名认证, 才能使用私钥进行操作(仅使用地址转过去是不需要的)
- 智能合约不能升级, 一次性部署
参考
部署相关
文档
还是比较方便就可以在本地启动.
账户
账号分为普通账号
和合约账号
. 合约账号是和智能合约配合使用, 是系统使用的 . 普通账号是普通的用户使用的.
普通账号和基本操作
其实和银行的概念基本类似, 不过是非中心化的, 公开透明的.
- 创建
普通账号
, 生成- address: 公开的地址(银行卡号)
- private key: 私钥(银行密码)
- public key: 没看到介绍,不过从对称性上讲,任何人持有公钥可以来验证这个私钥是不是正确的, 应该是给系统用.
- 查询
普通账户
余额- 通过address
普通账户
之间转账: 从A转B- 需要A的私钥
- B的地址
- 转账会生成一个交易ID
- 查询交易信息(通过交易产生的交易ID)
- 交易状态
- 交易目标账号
- 金额
- 这次交易所在的blockid(如果已经上链: 我理解上链的意思的其实就是完成了交易, 得到了认可并记录)
- 查询block信息(通过blockid)
- 前/后的block: 所以也就是可以查询整条交易链(block chain)
- 高度: 编号(有可能是从0开始的,毕竟这个东西这么技术. 需要查一下.)
合约
直观来理解
- 区块链可以维护一个键值对的数据库(或者就是个Map), 这个键值对的数据库在所有节点上都是保持一致的.
- 如果我们想在这里维护任何数据, 都通过合约来完成, 合约是我们访问键值对数据库的
代理
. - 合约就是几个方法, 链以外的应用通过API可以去调用这几个方法. 最终区块链保证运行的事务,可信和效率等. 我们只要等最终结果是否成功即可.
因为合约执行环境比较苛刻, 所以能力也比较受限,每次调用获得调用者的信息以及可以操作内部的键值对.
百度的Xuper支持合约的
- 部署: 将编译好的合约部署到网络
- 升级: 合约的代码是可以升级的: 百度开放网络是不支持升级的.
合约编写和部署
支持编写合约的语言
- C++: 宇宙语言, 看起来这是官方推荐的首选.
- Go: 因为Xuper是使用Go, 好像在Go的各种SDK上支持的都比较好
- Java: Java使用比较光, 开始支持,但是感觉各方面支持的一般
- Solitidy: 以太坊的官方推荐专为区块链. 不知道Xuper上使用起来怎么样.
合约类型
- wasm合约: 全新的字节码, 性能好. 区块链这样新技术,而且讲究运算效率,确实挺合适的. 都可以编译为wasm格式应该
- native合约: 比如java的jar包. 性能不可控, 开放网络应该也是不支持的.
- solidity合约: 等于是EVM(以太坊的VM, 其实就是每个节点)的native合约, 不过在Xuper需要指定配置一下
合约账号
合约账号跟普通账号使用类似, 不过是给系统使用.
如果自己部署需要创建一个合约账号, 使用开放链就从控制台上生成了(ID的格式大概是: XC807xxxxxxx@xuper
).
操作也和普通账号有一些类似
- 查看当前合约账号的余额
- ACL: 使用开放链,我们就只有自己的一个合约账号, 所以应该不需要特别关心权限.