1、性能比拼
以太坊:出块速度15秒,大约30~40TPS(交易/秒);
EOS:目标达到百万TPS
Visa:1700TPS
2、EOS特点
1)不需要每个节点都参与共识;
2)让持有EOS币的人可以通过持续的投票系统 来选择21个作为代表的超级节点;
3)比特币和以太坊中的手续费,目的是防止大量垃圾交易使得系统拥堵;EOS则通过基于膨胀的奖励机制
(每年增发1%,总增发不超过5%)完全取消了交易手续费,那如何避免系统资源的滥用呢?见4)
4)EOS的资源使用机制:根据账户中EOS通证的数量来分配系统资源,包括CPU与带宽的抵押/赎回,内存的买卖
3、EOS包括三个组件:
nodeos:账户管理、区块生成、共识建立,启动eos节点服务,提供智能合约的运行环境。
keosd:钱包管理程序,负责钱包、密钥、账户的管理和交易的签名
cleos:与nodeos和keosd交互,命令行工具、RPC API。
4、节点服务器nodeos
1)启动:
nodeos
2)退出:
pkill nodeos或者Ctrl + C
3)运行依赖的配置文件,默认位置:
~/.local/share/eosio/nodeos/config/config.ini
5、如果nodeos没有正常关闭,那么再次启动就会提示如下错误:
error: database dirty flag set. replay required.
如果需要历史数据,可以清除节点中的可逆块,然后重放交易来重新生成,步骤:
1)rm -rf ~/.local/share/eosio/nodeos/data/blocks/reversible
2)nodeos --replay-blockchain
当然,也可以完全删除整个数据目录,如果不再需要其中的账户和交易:
rm -rf ~/.local/share/eosio/nodeos/data
nodeos
6、钱包服务器keosd
1)启动:
keosd
2)退出:
pkill keosd或者Ctrl + C
3)运行依赖的配置文件,默认位置:
~/.local/share/eosio/nodeos/config/config.ini
7、在发送交易时,用户使用私钥签名交易,然后节点使用其公钥来确认该交易来源与声称的相符。
8、钱包用来保存私钥(可多个,只存私钥,因为由私钥可推导出公钥),故另一个作用是对数据进行签名(私钥不用出钱包即可实现,安全)
9、钱包创建生成的密码要记住,后面要用它来解锁,只有解锁的钱包,才可以用来签名交易。
10、钱包的对应目录为:
~/eosio-wallet/*.wallet
若要重新创建同名钱包,需要先删除这个文件。
11、创建钱包可以使用-n选项来声明钱包的名称。
12、查看区块链统计信息
cleos get info
13、查看当前kesod管理的所有钱包:
cleos wallet list
14、钱包创建后,自动处于解锁状态(*符号),默认15分钟(900秒)内没有操作钱包会锁住Locked,重新启动keosd以后处于关闭 状态 —— Closed。
15、输入cleos wallet会提示出所有子命令
1)cleos wallet lock_all:锁定所有钱包
2)cleos wallet unlock
3)cleos wallet list
4)cleos wallet unlock -n 钱包名
16、创建一对秘钥
cleos create key
注:这会创建一个公钥、一个私钥并输出到屏幕。
17、与其他区块链不同,EOS的账户是建立在区块链上的,每个账户都对应 于链上的账户表中的一条记录;另一点区别在于,EOS的一个账户需要 两组密钥。创建一个账户:
cleos create account {创建者账户名} {新的账户名} 公钥1 公钥2
18、要创建一个账户:
1)创建两组秘钥
2)将两组私钥导入到钱包
3)导入系统账号eosio的私钥到钱包里
4)用账户eosio来创建新账户wzp并导入两组公钥
19、EOS中的账户和钱包难以理解,参照现实生活中:
EOS: 钱包 EOS账户 密钥对(公、私) 公钥 私钥 现实: 钱包 银行账户 银行卡密码 锁 钥匙 总结:用钱包创建一个账户,账户是一个数字资产的保险箱名字,然后又一对秘钥,私钥在我钱包,公钥在账户相当于这个账户的锁,我要动里面的资产,我得用私钥打开它。
20、 和通常的C++编译目标不同,EOS的编译输出是WebAssembly格式的指令模块 —— WASM模块。
21、把WebAssembly视为一种汇编语言,只是它不依赖于特定的硬件架构, 而是运行在WebAssembly虚拟机之上。
22、wasm二进制格式,wast文本格式,wast便于开发人员编辑与调试,这两种格式之间可互换。
23、命令行工具eosiocpp处理合约代码,可以编译生成wasm/wast、提取abi信息。使用-o或--outname选项,即可生成wasm模块及wast文件。
/repo/counter$ eosiocpp -o counter.wast counter.cpp`
注:只需指定输出的wast文件名,会自动生成对应的wasm模块
24、使用-g或--genabi参数来执行eosiocpp命令,就可以生成指定合约类对应的ABI接口文件。
~/repo/counter$ eosiocpp -g counter.abi counter.cpp`