之前讲述过linux环境下Go语言开发环境搭建,这次简述下windows的搭建以及vscode配置
windows环境搭建
同样去https://studygolang.com/dl下载windows环境go安装包
直接下载msi安装
之前讲述过linux环境下Go语言开发环境搭建,这次简述下windows的搭建以及vscode配置
同样去https://studygolang.com/dl下载windows环境go安装包
直接下载msi安装
/home/secondtonone/goproject
bin pkg src
bin 保存执行go install 源码目录后生成的可执行文件
pkg 文件夹是存在go编译生成的文件
src存放的是我们的go源代码,不同工程项目的代码以包名区分
去国内的网站下载https://studygolang.com/dl 根据不同的平台选择对应的安装包
然后将压缩包解压到 /usr/local/
sudo tar -C /usr/local/ -xzvf go1.10.2.linux-amd64.tar.gz
1 | struct block_header { |
结构体中timestamp是块打包好的时间戳,previous是前一个块的id,transaction_mroot表示所有交易的merkle root, action_root表示 action的merkle root。
num_from_id通过blockid找到blocknum。
python开发,有时候需要设计单例模式保证操作的唯一性和安全性。理论上python语言底层实现和C/C++不同,python采取的是引用模式,当一个对象是可变对象,对其修改不会更改引用的指向,当一个对象是不可修改对象,对其修改会改变引用指向。
该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址。
该对象所指向的内存中的值可以被改变。变量(准确的说是引用)改变后,实际上是其所指的值直接发生改变,并没有发生复制行为,也没有开辟新的出地址,通俗点说就是原地改变。
Python中,数值类型(int和float)、字符串str、元组tuple都是不可变类型。
而列表list、字典dict、集合set,以及开发人员自己定义的类是可变类型
EOCS跨链技术的核心就是ICP模块,ICP即Inter Chain Protocol(跨链交互协议),下面着重介绍ICP工作原理和实现细节。
建立于EOSIO软件堆栈之上的ICP跨链基础设施,可应用于EOSIO兼容的同构区块链的跨链通信。ICP设计之初,就考虑怎样以一种无侵入、可安全验证、去中心化的方式来实现EOS多链并行的同构跨链网络。经过对业界最前沿的跨链技术的研究(包括BTC Relay、Cosmos、Polkadot等),并结合对EOSIO软件实现细节的差异化剖析,ICP采取了比较现实的跨链方案:
EOCS(Enterprise Operation Cross System),是一个基于eosio底层框架实现的企业级跨链操作系统,旨在实现和EOS主链通信的并行链,是真正意义的跨链,支持高效稳定的跨链交易,为跨链生态建设提供更稳定和安全的平台。作为可与EOS主链交互操作的第一条并行链,EOCS Chain力图实现安全可靠、快捷便利的跨链资产转移、跨链智能合约调用。任何人都可以在EOCS Chain并行链上开发或使用跨链DAPP。
EOCS Chain并行链允许EOS主链与主流公有链、联盟链、私有链互相通信和价值交换。
通过多链互联互操作,EOCS Chain可帮助EOS实现史无前例的无限扩展。
EOCS Chain延续了EOS软件堆栈的WebAssembly机制,可以非常轻松地开发DAPP。
1 net_plugin_impl::connect(connection_ptr c) 函数用于解析地址,内部异步回调async_resolve
在eos源码目录中programs/nodeos/main.cpp文件里,为节点启动的主函数
main函数内部做了两件事
1 初始化 application
1 | if(!app().initialize<chain_plugin, http_plugin, net_plugin, producer_plugin>(argc, argv)) |
2 application启动和插件启动
1 | app().startup(); |