接下来设置 module 生效和 GOPROXY,命令如下:
在项目工程内,执行初始化,calldemo 可以自定义名称 。
步骤 05:运行代码 。执行代码,将看到下面的效果,以及最终输出的 2020 。
上述输出信息中,可以看到 Go 语言会自动下载依赖文件,这就是 go mod 的神奇之处 。看到 2020,相信读者也知道运行结果是正确的了 。
学习区块链开发是学习go语言、hyper ledger fabric比较好、还是以太坊智能合约比较好或者公链开发?Fabric区块链开发详解,本课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、通道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、链码与应用开发的操作实践,是学习Fabric区块链开发的最佳选择 。
给你个免费区块链博客看看 。
【深度知识】以太坊数据序列化RLP编码/解码原理RLP(Recursive Length Prefix) , 中文翻译过来叫递归长度前缀编码,它是以太坊序列化所采用的编码方式 。RLP主要用于以太坊中数据的网络传输和持久化存储 。
对象序列化方法有很多种,常见的像JSON编码,但是JSON有个明显的缺点:编码结果比较大 。例如有如下的结构:
【以太坊go语言源码 以太坊源码是什么语言】 变量s序列化的结果是{"name":"icattlecoder","sex":"male"},字符串长度35 , 实际有效数据是icattlecoder 和male,共计16个字节,我们可以看到JSON的序列化时引入了太多的冗余信息 。假设以太坊采用JSON来序列化,那么本来50GB的区块链可能现在就要100GB,当然实际没这么简单 。
所以,以太坊需要设计一种结果更小的编码方法 。
RLP编码的定义只处理两类数据:一类是字符串(例如字节数组),一类是列表 。字符串指的是一串二进制数据,列表是一个嵌套递归的结构,里面可以包含字符串和列表 , 例如["cat",["puppy","cow"],"horse",[[]],"pig",[""],"sheep"]就是一个复杂的列表 。其他类型的数据需要转成以上的两类 , 转换的规则不是RLP编码定义的,可以根据自己的规则转换,例如struct可以转成列表,int可以转成二进制(属于字符串一类),以太坊中整数都以大端形式存储 。
从RLP编码的名字可以看出它的特点:一个是递归,被编码的数据是递归的结构,编码算法也是递归进行处理的;二是长度前缀,也就是RLP编码都带有一个前缀,这个前缀是跟被编码数据的长度相关的 , 从下面的编码规则中可以看出这一点 。
对于值在[0, 127]之间的单个字节,其编码是其本身 。
例1:a的编码是97 。
如果byte数组长度l = 55,编码的结果是数组本身,再加上128+l作为前缀 。
例2:空字符串编码是128 , 即128 = 128 + 0 。
例3:abc编码结果是131 97 98 99,其中131=128+len("abc"),97 98 99依次是a b c 。
如果数组长度大于55, 编码结果第一个是183加数组长度的编码的长度,然后是数组长度的本身的编码,最后是byte数组的编码 。
请把上面的规则多读几篇,特别是数组长度的编码的长度 。
例4:编码下面这段字符串:
The length of this sentence is more than 55 bytes, I know it because I pre-designed it
这段字符串共86个字节,而86的编码只需要一个字节 , 那就是它自己,因此,编码的结果如下:
184 86 84 104 101 32 108 101 110 103 116 104 32 111 102 32 116 104 105 115 32 115 101 110 116 101 110 99 101 32 105 115 32 109 111 114 101 32 116 104 97 110 32 53 53 32 98 121 116 101 115 44 32 73 32 107 110 111 119 32 105 116 32 98 101 99 97 117 115 101 32 73 32 112 114 101 45 100 101 115 105 103 110 101 100 32 105 116
推荐阅读
- kit服务器,kitserver
- 日文角色扮演游戏歌曲,日文角色扮演游戏歌曲叫什么
- 电脑主机上网要求什么,电脑主机要连接网线吗
- vb.net组态王 vb控件做组态王报表
- mysql数据库删除又出现,mysql删除除了某些数据之外的数据sql
- 公众号怎么修改菜单栏,公众号怎么更改菜单
- 什么是数字电视怎么看直播,数字电视这样看节目电视
- vb.net打开目录 vbnet打开指定目录下的文件
- linuxjq命令安装的简单介绍