EOS新闻动态

EOS新闻动态

EOS简介,新闻动态更新
EOS技术讨论

EOS技术讨论

EOS, Bitshares, steem, Graphene技术分析
EOS众筹价格

EOS众筹价格

EOS众筹模式,价格讨论
EOS其他相关

EOS其他相关

其他的关于EOS的问题和话题都在这

EOS 编译、测试指南(四) --EOS 智能合约数据结构 API

EOS代码分析郑浩 发表了文章 • 0 个评论 • 716 次浏览 • 2017-11-07 15:13 • 来自相关话题

EOS 团队于 2017 年 9 月 14 日推出了 Dawn 1.0 release 版本,熟悉 Linux 和
C++的开发人员可以在此基础上尝试自己的合约开发了。OracleChain 团队一直以
来都在对 EOS 代码进行了编译和测试,陆续发布了三份《EOS 编译、测试指南》,
详细介绍了 EOS 的入门知识、基本结构,帮助开发人员学习、研究 EOS。基于
EOS 刚刚推出的 Dawn 1.0,OralceChain 团队进行了测试,本次将以代币的发行
为例,详细介绍 EOS 上 WASM 的数据库机制和智能合约的数据库 API,基于此开
发人员可以在 EOS 上发行自己的代币和开发钱包应用。
该指南主要依据 EOS 的官方文档,以及欧链团队的实践经验编写,开发者有
任何技术问题可以关注欧链小秘书、在欧链科技社区里向 OracleChain 团队提问
或者发送邮件到 contact@oraclechain.io。
EOS 文档:https://eosio.github.io/eos/
EOS 代码:https://github.com/EOSIO/eos
备注:OracleChain 团队使用 Mac 环境进行开发。
EOS.IO 的架构目标,是成为一个高效的消息分发平台,消息被分发到 account
(合约)中然后被高效地并发执行。
EOS 底层需要一个高效的沙盒运行环境。沙盒中,底层的脚本语言,执行环
境都是可以被替换的。在白皮书中,EOS 宣传支持 EVM 和 WASM 两种沙盒运行
环境。目前所知,WASM 的运行效率比 EVM 高很多,这点为 EOS 提供了有力的
竞争条件。高效的执行环境,提供了更快的交易反馈时间,从而在单个出块周期
处理更多的业务,可以运行更大规模的运算。



一、智能合约的数据库 API

EOS 的合约执行依赖于 WASM 的沙盒运行环境。
上一份指南中,OracleChain 团队分析了 block 数据结构的存储,EOS 使用
boost::interprocess,将 block 信息通过文件映射存储到磁盘上。
而在 EOS 合约执行过程中,所有的 account 状态都存储在沙盒的运行内存
中。EOS 对 account 的操作,通过调用 contract/eoslib/db.hpp 的 table 模版类,进
行类似于传统的增删查改操作。db.hpp 通过一个 c 接口,接入 WASM 沙盒环境,
实现了跨平台的储存机制。WASM 对数据存储的具体实现,依赖 chainbase.hpp
中,database 类实现的 mmap 数据存储接口。
account 的状态数据,均存储在一个 table 的数据结构中,我们可以在 db.hpp
中可以看到对其的实现:
template<uint64_t scope, uint64_t code, uint64_t table, typename Record, typename PrimaryType, typename SecondaryType = void>
 struct Table { 
… }
 struct Table<scope,code,table,Record,PrimaryType,void>
 {
 …
 } 
由此可见智能合约的数据结构大致如下: 
* - **scope** - an account where the data is stored
* - **code** - the account name which has write permission
 * - **table** - a name for the table that is being stored 
* - **record** - a row in the table
 * - **PrimaryType** - primary key in one record 
* - **SecondaryType** - secondary key in one record

开发者使用 db.hpp 调用中 C 或 C++包装的 api,来实现数据存取。
在每一条交易信息中会使用 scope 指定哪些账号需要对该消息读、写。code
决定了对应 account 可以采取的操作,这种操作权限和代码分离的设计提升了安
全性。同时,如果修改了不在 scope 中的 account 的信息或者执行了非 code 的操
作,会直接导致该交易失败。
以代币的发行实例来看 (代码部分参见 contract/currency.cpp),代币的所有
账户都以 Table 的形式存储: using Accounts = Table<N(currency),N(currency),N(account),Account,uint64_t>;
合约文件中,提供了初始化代币和代币转账接口,当代币合约被存储时,各
节点会自动执行一次合约中的 init 接口。当每次合约被调用,将调用合约中的apply 接口: 
 
extern "C" {
 void init() {
 storeAccount(N(currency),Account( CurrencyTokens(1000ll*1000ll*1000ll) ) ); 
}
 void apply( uint64_t code, uint64_t action ) {
 if( code == N(currency) ) {
 if( action == N(transfer) ) 
currency::apply_currency_transfer(currentMessage< 
TOKEN_NAME::Transfer >() ); 


}

table将不同scope/code/table的account数据,存储到了不同的内存映射中。
在 currency.cpp 合约中,eos 使用 table 实现了代币账户下各种业务逻辑。
当用户发行 currency 合约时,会用工具把 cpp 生成 currency.wast.cpp 文件,

同时需要一个 abi 文件作为第三方输入到合约的数据接口,接着 wasm-jit 会把
wast 代码,连同 abi 接口,一起存储到 tx 的 message 中,让其他节点验证并存
储此合约,等待合约被调用。
以下代码中,实现了打包 currency 合约到 transaction 中的流程:

types::setcode handler; handler.account = "currency";
auto wasm = assemble_wast( currency_wast ); 
handler.code.resize(wasm.size());
 memcpy( handler.code.data(), wasm.data(), wasm.size() );
eos::chain::SignedTransaction trx;
 trx.scope = {"currency"};
 trx.messages.resize(1); 
trx.messages[0].code = config::EosContractName; trx.messages[0].authorization.emplace_back(types::AccountPermission{"currenc y","active"}); transaction_set_message(trx, 0, "setcode", handler); 
trx.expiration = chain.head_block_time() + 100;
 transaction_set_reference_block(trx, chain.head_block_id()); 
chain.push_transaction(trx); 
chain.produce_blocks(1);
 

二、智能合约数据存储实例

智能合约中基础的功能之一是 token 在某种规则下的转移。以 EOS 提供的
token.cpp 为例,定义了 eos token 的数据结构:typedef eos::token<uint64_t,N(eos)> Tokens; 以 currency 合约为例。合约中,也用类 token 模版类生成了代币 currency: typedef eos::token<uint64_t,N(currency)> CurrencyTokens; 有了 eos token 和我们发行的子代币,我们就能编写合约,让用户使用不同
的代币进行交易。在 currency.cpp 或 exchange.cpp 中,eos 实现了发行代币、代
币流通、兑换功能。
eos 和自定义 currency 在流通时,都使用一个类似的 Transfer 结构体:
 
struct Transfer{ 
AccountName from; 
AccountName to;
 Tokens quantity; 
};

这样,在转账时,调用 currency.cpp 中实现的 abi 接口,传入 Transfer 结构
表明想要转账的 token 数量:
Transfer MeToYou;
 MeToYou.from = N(Me);
 MeToYou.to = N(You);
 MeToYou.quantity = Tokens(100);
当 eos 的合约处理接收到这样的请求时,会调用相关流程完成对对应 token
的处理。
void apply_transfer( const Transfer& transfer ) {
 auto from = getAccount( transfer.from ); 
auto to = getAccount( transfer.to ); 
from.balance -= transfer.quantity; to.balance += transfer.quantity; 
assertion storeAccount( transfer.from, from );
 storeAccount( transfer.to, to ); 
}
最终存储结果将保存到沙盒的内存中。

三、智能合约数据库的持久化
在沙盒机制中,当我们运行一个合约、发行一个代币时,EOS 为我们提供的
一些基础运行框架。其中最重要的两个:第一,实现了平台无关的 account 存储
机制;第二,提供了一个 account 间结算的业务平台。同时 EOS 会将沙盒里面的
数据存储接口储存在具体物理设备上来,实现数据的持久化。
在 chain/wasm_interface.cpp 中,对接了 wasm 的 context,并使用 context 获
取到 db.hpp 中实现的数据存储接口,然后将这些接口实现到了
message_handing_contexts.hpp 中。
 
chain/wasm_interface.cpp:
#define DEFINE_RECORD_UPDATE_FUNCTIONS(OBJTYPE, INDEX) \
DEFINE_INTRINSIC_FUNCTION4(env,store_##OBJTYPE,store_##OBJTYPE,i32,i64,scop e,i64,table,i32,valueptr,i32,valuelen) { \
UPDATE_RECORD(store_record, INDEX, valuelen); \
} \
DEFINE_INTRINSIC_FUNCTION4(env,update_##OBJTYPE,update_##OBJTYPE,i32,i64,s cope,i64,table,i32,valueptr,i32,valuelen) { \
UPDATE_RECORD(update_record, INDEX, valuelen); \
} \
DEFINE_INTRINSIC_FUNCTION3(env,remove_##OBJTYPE,remove_##OBJTYPE,i32,i64, scope,i64,table,i32,valueptr) { \
UPDATE_RECORD(remove_record, INDEX, sizeof(typename INDEX::value_type::key_type)*INDEX::value_type::number_of_keys); \ }

message_handing_contexts.hpp:
int32_t update_record( Name scope, Name code, Name table, typename ObjectType::key_type *keys, char* value, uint32_t valuelen )
int32_t remove_record( Name scope, Name code, Name table, typename ObjectType::key_type* keys, char* value, uint32_t valuelen )
int32_t load_record( Name scope, Name code, Name table, typename IndexType::value_type::key_type* keys, char* value, uint32_t valuelen ) 这样后面的处理流程就比较清晰了。当合约在读取数据时,将调用
message_handing_contexts.hpp 的 load_recod 接口:
template <typename IndexType, typename Scope>
int32_t load_record( Name scope, Name code, Name table, typename IndexType::value_type::key_type* keys, char* value, uint32_t valuelen ) {
const auto& idx = db.get_index<IndexType, Scope>();
auto tuple = load_record_tuple<typename IndexType::value_type, Scope>::get(scope, code, table, keys);
auto itr = idx.lower_bound(tuple);
… }
上面 load_record 代码中,调用了 db.get_index 方法。此处的 db 也就是
chainbase/chainbase.hpp 中实现的 database 类。database 中使用了 boost 的
managed_mapped_file,实现了对数据的存储和读取的接口。
在 EOS 提供的插件 plugins/chain_plugin/chain_plugin.hpp 中提供了一种从数
据库读取 table 的方法: get_table_rows_result get_table_rows( const get_table_rows_params& params )const;
利用这个方法开发者就能读取到合约目前的所有状态,开发属于自己的钱包
了。
 
 

四、总结
EOS.IO 发布的 Dawn 1.0 版本已经提供了开发智能合约的基本 API,本次
OracleChain 团队从数据库结构到持久化方法介绍了 EOS 智能合约的数据库 API。
基于这些 API,开发者就可以开发出自己的钱包。
转自:欧链科技
 
  查看全部

EOS 团队于 2017 年 9 月 14 日推出了 Dawn 1.0 release 版本,熟悉 Linux 和
C++的开发人员可以在此基础上尝试自己的合约开发了。OracleChain 团队一直以
来都在对 EOS 代码进行了编译和测试,陆续发布了三份《EOS 编译、测试指南》,
详细介绍了 EOS 的入门知识、基本结构,帮助开发人员学习、研究 EOS。基于
EOS 刚刚推出的 Dawn 1.0,OralceChain 团队进行了测试,本次将以代币的发行
为例,详细介绍 EOS 上 WASM 的数据库机制和智能合约的数据库 API,基于此开
发人员可以在 EOS 上发行自己的代币和开发钱包应用。
该指南主要依据 EOS 的官方文档,以及欧链团队的实践经验编写,开发者有
任何技术问题可以关注欧链小秘书、在欧链科技社区里向 OracleChain 团队提问
或者发送邮件到 contact@oraclechain.io。
EOS 文档:https://eosio.github.io/eos/
EOS 代码:https://github.com/EOSIO/eos
备注:OracleChain 团队使用 Mac 环境进行开发。
EOS.IO 的架构目标,是成为一个高效的消息分发平台,消息被分发到 account
(合约)中然后被高效地并发执行。
EOS 底层需要一个高效的沙盒运行环境。沙盒中,底层的脚本语言,执行环
境都是可以被替换的。在白皮书中,EOS 宣传支持 EVM 和 WASM 两种沙盒运行
环境。目前所知,WASM 的运行效率比 EVM 高很多,这点为 EOS 提供了有力的
竞争条件。高效的执行环境,提供了更快的交易反馈时间,从而在单个出块周期
处理更多的业务,可以运行更大规模的运算。



一、智能合约的数据库 API

EOS 的合约执行依赖于 WASM 的沙盒运行环境。
上一份指南中,OracleChain 团队分析了 block 数据结构的存储,EOS 使用
boost::interprocess,将 block 信息通过文件映射存储到磁盘上。
而在 EOS 合约执行过程中,所有的 account 状态都存储在沙盒的运行内存
中。EOS 对 account 的操作,通过调用 contract/eoslib/db.hpp 的 table 模版类,进
行类似于传统的增删查改操作。db.hpp 通过一个 c 接口,接入 WASM 沙盒环境,
实现了跨平台的储存机制。WASM 对数据存储的具体实现,依赖 chainbase.hpp
中,database 类实现的 mmap 数据存储接口。
account 的状态数据,均存储在一个 table 的数据结构中,我们可以在 db.hpp
中可以看到对其的实现:
template<uint64_t scope, uint64_t code, uint64_t table, typename Record, typename PrimaryType, typename SecondaryType = void>
 struct Table { 
… }
 struct Table<scope,code,table,Record,PrimaryType,void>
 {
 …
 } 
由此可见智能合约的数据结构大致如下: 
* - **scope** - an account where the data is stored
* - **code** - the account name which has write permission
 * - **table** - a name for the table that is being stored 
* - **record** - a row in the table
 * - **PrimaryType** - primary key in one record 
* - **SecondaryType** - secondary key in one record

开发者使用 db.hpp 调用中 C 或 C++包装的 api,来实现数据存取。
在每一条交易信息中会使用 scope 指定哪些账号需要对该消息读、写。code
决定了对应 account 可以采取的操作,这种操作权限和代码分离的设计提升了安
全性。同时,如果修改了不在 scope 中的 account 的信息或者执行了非 code 的操
作,会直接导致该交易失败。
以代币的发行实例来看 (代码部分参见 contract/currency.cpp),代币的所有
账户都以 Table 的形式存储: using Accounts = Table<N(currency),N(currency),N(account),Account,uint64_t>;
合约文件中,提供了初始化代币和代币转账接口,当代币合约被存储时,各
节点会自动执行一次合约中的 init 接口。当每次合约被调用,将调用合约中的apply 接口: 
 
extern "C" {
 void init() {
 storeAccount(N(currency),Account( CurrencyTokens(1000ll*1000ll*1000ll) ) ); 
}
 void apply( uint64_t code, uint64_t action ) {
 if( code == N(currency) ) {
 if( action == N(transfer) ) 
currency::apply_currency_transfer(currentMessage< 
TOKEN_NAME::Transfer >() ); 


}

table将不同scope/code/table的account数据,存储到了不同的内存映射中。
在 currency.cpp 合约中,eos 使用 table 实现了代币账户下各种业务逻辑。
当用户发行 currency 合约时,会用工具把 cpp 生成 currency.wast.cpp 文件,

同时需要一个 abi 文件作为第三方输入到合约的数据接口,接着 wasm-jit 会把
wast 代码,连同 abi 接口,一起存储到 tx 的 message 中,让其他节点验证并存
储此合约,等待合约被调用。
以下代码中,实现了打包 currency 合约到 transaction 中的流程:

types::setcode handler; handler.account = "currency";
auto wasm = assemble_wast( currency_wast ); 
handler.code.resize(wasm.size());
 memcpy( handler.code.data(), wasm.data(), wasm.size() );
eos::chain::SignedTransaction trx;
 trx.scope = {"currency"};
 trx.messages.resize(1); 
trx.messages[0].code = config::EosContractName; trx.messages[0].authorization.emplace_back(types::AccountPermission{"currenc y","active"}); transaction_set_message(trx, 0, "setcode", handler); 
trx.expiration = chain.head_block_time() + 100;
 transaction_set_reference_block(trx, chain.head_block_id()); 
chain.push_transaction(trx); 
chain.produce_blocks(1);
 

二、智能合约数据存储实例

智能合约中基础的功能之一是 token 在某种规则下的转移。以 EOS 提供的
token.cpp 为例,定义了 eos token 的数据结构:typedef eos::token<uint64_t,N(eos)> Tokens; 以 currency 合约为例。合约中,也用类 token 模版类生成了代币 currency: typedef eos::token<uint64_t,N(currency)> CurrencyTokens; 有了 eos token 和我们发行的子代币,我们就能编写合约,让用户使用不同
的代币进行交易。在 currency.cpp 或 exchange.cpp 中,eos 实现了发行代币、代
币流通、兑换功能。
eos 和自定义 currency 在流通时,都使用一个类似的 Transfer 结构体:
 
struct Transfer{ 
AccountName from; 
AccountName to;
 Tokens quantity; 
};

这样,在转账时,调用 currency.cpp 中实现的 abi 接口,传入 Transfer 结构
表明想要转账的 token 数量:
Transfer MeToYou;
 MeToYou.from = N(Me);
 MeToYou.to = N(You);
 MeToYou.quantity = Tokens(100);
当 eos 的合约处理接收到这样的请求时,会调用相关流程完成对对应 token
的处理。
void apply_transfer( const Transfer& transfer ) {
 auto from = getAccount( transfer.from ); 
auto to = getAccount( transfer.to ); 
from.balance -= transfer.quantity; to.balance += transfer.quantity; 
assertion storeAccount( transfer.from, from );
 storeAccount( transfer.to, to ); 
}
最终存储结果将保存到沙盒的内存中。

三、智能合约数据库的持久化
在沙盒机制中,当我们运行一个合约、发行一个代币时,EOS 为我们提供的
一些基础运行框架。其中最重要的两个:第一,实现了平台无关的 account 存储
机制;第二,提供了一个 account 间结算的业务平台。同时 EOS 会将沙盒里面的
数据存储接口储存在具体物理设备上来,实现数据的持久化。
在 chain/wasm_interface.cpp 中,对接了 wasm 的 context,并使用 context 获
取到 db.hpp 中实现的数据存储接口,然后将这些接口实现到了
message_handing_contexts.hpp 中。
 
chain/wasm_interface.cpp:
#define DEFINE_RECORD_UPDATE_FUNCTIONS(OBJTYPE, INDEX) \
DEFINE_INTRINSIC_FUNCTION4(env,store_##OBJTYPE,store_##OBJTYPE,i32,i64,scop e,i64,table,i32,valueptr,i32,valuelen) { \
UPDATE_RECORD(store_record, INDEX, valuelen); \
} \
DEFINE_INTRINSIC_FUNCTION4(env,update_##OBJTYPE,update_##OBJTYPE,i32,i64,s cope,i64,table,i32,valueptr,i32,valuelen) { \
UPDATE_RECORD(update_record, INDEX, valuelen); \
} \
DEFINE_INTRINSIC_FUNCTION3(env,remove_##OBJTYPE,remove_##OBJTYPE,i32,i64, scope,i64,table,i32,valueptr) { \
UPDATE_RECORD(remove_record, INDEX, sizeof(typename INDEX::value_type::key_type)*INDEX::value_type::number_of_keys); \ }

message_handing_contexts.hpp:
int32_t update_record( Name scope, Name code, Name table, typename ObjectType::key_type *keys, char* value, uint32_t valuelen )
int32_t remove_record( Name scope, Name code, Name table, typename ObjectType::key_type* keys, char* value, uint32_t valuelen )
int32_t load_record( Name scope, Name code, Name table, typename IndexType::value_type::key_type* keys, char* value, uint32_t valuelen )
这样后面的处理流程就比较清晰了。当合约在读取数据时,将调用
message_handing_contexts.hpp 的 load_recod 接口:
template	<typename	IndexType,	typename	Scope>
int32_t load_record( Name scope, Name code, Name table, typename IndexType::value_type::key_type* keys, char* value, uint32_t valuelen ) {
const auto& idx = db.get_index<IndexType, Scope>();
auto tuple = load_record_tuple<typename IndexType::value_type, Scope>::get(scope, code, table, keys);
auto itr = idx.lower_bound(tuple);
… }

上面 load_record 代码中,调用了 db.get_index 方法。此处的 db 也就是
chainbase/chainbase.hpp 中实现的 database 类。database 中使用了 boost 的
managed_mapped_file,实现了对数据的存储和读取的接口。
在 EOS 提供的插件 plugins/chain_plugin/chain_plugin.hpp 中提供了一种从数
据库读取 table 的方法: get_table_rows_result get_table_rows( const get_table_rows_params& params )const;
利用这个方法开发者就能读取到合约目前的所有状态,开发属于自己的钱包
了。
 
 

四、总结
EOS.IO 发布的 Dawn 1.0 版本已经提供了开发智能合约的基本 API,本次
OracleChain 团队从数据库结构到持久化方法介绍了 EOS 智能合约的数据库 API。
基于这些 API,开发者就可以开发出自己的钱包。
转自:欧链科技
 
 

DPOS如何预防DDOS攻击

EOS其他相关郑浩 回复了问题 • 3 人关注 • 1 个回复 • 574 次浏览 • 2017-10-26 16:50 • 来自相关话题

授权股权证明机制白皮书(Delegated Proof-of-Stake ,DPOS)

EOS其他相关郑浩 发表了文章 • 1 个评论 • 515 次浏览 • 2017-10-26 16:27 • 来自相关话题

授权股权证明机制白皮书
(Delegated Proof-of-Stake ,DPOS)
作者: Daniel Larimer
April 3, 2014
翻译:yidaidaxia_郝晓曦
比特坊数字资产研究俱乐部 翻译作品(www.bitfarm.io)

摘要
本白皮书介绍一种股权证明机制的新实现方式,该方式可以对交易进行秒级验证,并且能够在更短的时间内提供比现有任何股权证明系统都更好的安全性。在比特币网络产生一个区块的时间过后,一个授权股权证明系统(DPOS)能使你的交易得到20%股东的核实,而在比特币网络声明交易已几乎不可逆(6个区块,约1小时)的时间过后,在DPOS机制下,通过其代表,你的交易已经得到100%股东的核实。

1.0 背景
分布式交易总账需要在尽可能短的时间内做到安全、明确及不可逆,便于提供一个最坚实且去中心化的系统。在实践中,该流程分为两个方面:选择一个独特的节点来产生一个区块,并使得交易总账不可逆。

1.1 工作量证明机制(Proof of Work, POW)
第一个成功解决该问题的尝试是比特币系统(Bitcoin),比特币系统使用工作量证明机制使更长总账的产生具有计算性难度。工作量证明机制就好比是乐透,平均每10分钟有一个节点找到一个区块。如果两个节点在同一个时间找到区块,那么网络将根据后续节点的决定来确定以哪个区块构建总账。从统计学角度讲,一笔交易在6个区块(约1个小时)后被认为是明确确认且不可逆的。然而,核心开发者认为,需要120个区块(约一天),才能充分保护网络不受来自潜在更长的已将新产生的币花掉的攻击区块链的威胁。
尽管出现更长的区块链会变得不太可能,但任何拥有巨大经济资源的人都仍有可能制造一个更长的区块链或者具备足够的哈希算力来冻结用户的账户。

1.2 股权证明机制(Proof of Stake, POS)
股权证明机制已有很多不同变种,但基本概念是产生区块的难度应该与你在网络里所占的股权(所有权占比)成比例。到目前为止,已有两个系统开始运行:点点币(Peercoin)和未来币(NXT)。点点币使用一种混合模式,用你的股权调整你的挖矿难度。未来币使用一个确定性算法以随机选择一个股东来产生下一个区块。未来币算法基于你的账户余额来调整你被选中的可能性。
未来币和点点币都分别解决了谁来生产下一个区块的问题,但他们没有找到在适当的时间内使区块链具备不可逆的安全性的方法。根据我们能找到的信息,做到这点,点点币需要至少6个区块(约一小时),未来币需要10个区块。我们找不到在10个区块后未来币能提供什么级别安全性的根据。
我们之前发布了基于交易的股权证明机制(Transactions as Proof of Stake, TaPOS)的白皮书,在该机制中,每笔交易都包含区块链中前一个区块的哈希值。通过该系统,对任何人而言,网络变得越来越安全而不可逆,因为最终每个区块都经过了股东投票。股权证明机制面临的挑战是它没有定义谁来产生下一个区块。

1.3 瑞波共识机制(Ripple Consensus)
瑞波共识算法,使一组节点能够基于特殊节点列表达成共识。初始特殊节点列表就像一个俱乐部,要接纳一个新成员,必须由51%的该俱乐部会员投票通过。共识遵循这核心成员的51%权力,外部人员则没有影响力。由于该俱乐部由“中心化”开始,它将一直是“中心化的”,而如果它开始腐化,股东们什么也做不了。与比特币及点点币一样,瑞波系统将股东们与其投票权隔开,并因此比其他系统更中心化。

2.0 授权股权证明机制(DPOS)
当使用去中心化自治公司(Decentralized Autonomous Company, DAC)这一说法时,去中心化表示每个股东按其持股比例拥有影响力,51%股东投票的结果将是不可逆且有约束力的。其挑战是通过及时而高效的方法达到51%批准。
为达到这个目标,每个股东可以将其投票权授予一名代表。获票数最多的前100位代表按既定时间表轮流产生区块。每名代表分配到一个时间段来生产区块。所有的代表将收到等同于一个平均水平的区块所含交易费的10%作为报酬。如果一个平均水平的区块含有100股作为交易费,一名代表将获得1股作为报酬。
网络延迟有可能使某些代表没能及时广播他们的区块,而这将导致区块链分叉。然而,这不太可能发生,因为制造区块的代表可以与制造前后区块的代表建立直接连接。建立这种与你之后的代表(也许也包括其后的那名代表)的直接连接是为了确保你能得到报酬。
该模式可以每30秒产生一个新区块,并且在正常的网络条件下区块链分叉的可能性极其小,即使发生也可以在几分钟内得到解决。

2.1 成为一名代表
成为一名代表,你必须在网络上注册你的公钥,然后分配到一个32位的特有标识符。然后该标识符会被每笔交易数据的“头部”引用。

2.2 授权你的选票
每个钱包有一个参数设置窗口,在该窗口里用户可以选择一个或更多的代表,并将其分级。一经设定,用户所做的每笔交易将把选票从“输入代表”转移至“输出代表”。一般情况下,用户不会创建特别以投票为目的的交易,因为那将耗费他们一笔交易费。但在紧急情况下,某些用户可能觉得通过支付费用这一更积极的方式来改变他们的投票是值得的。 

2.3 保持代表诚实
每个钱包将显示一个状态指示器,让用户知道他们的代表表现如何。如果他们错过了太多的区块,那么系统将会推荐用户去换一个新的代表。如果任何代表被发现签发了一个无效的区块,那么所有标准钱包将在每个钱包进行更多交易前要求选出一个新代表。

2.4 解决区块链分叉
和工作量证明系统及其他股权证明系统一样,最佳区块链是最长的有效区块链。任何时候,一名代表错过签发一个区块的机会,该区块链将比潜在竞争对手短。只要在你的交易被写入区块后的100个区块中的51%被生产出来了,那么你就可以安全地认为你在主区块链上。
也许,在防止区块链分叉所导致的损失方面,最重要的事是在事发后第一时间得知消息。因为代表们通过生产区块得到很好的报酬,他们将保持接近100%的在线时间来防止因被投票罢免而损失收入。你可以安全地认为如果在过去的10个区块中,有一两个区块错过生产,则互联网的某些部分可能正发生连接问题,那么用户应该对此特别警觉并要求额外的确认数。如果10区块中有超过5个错过生产,那么这意味着你很可能在一条支链上,因此应该停止所有交易,直到分叉得到解决。
以一种及时的方式(少于5分钟)简单地发现并警示用户网络分叉,是可以最小化潜在损失的非常重要的能力。而知道你是否正处在一条支链上则更为重要。

2.5 100名代表是去中心化的吗?
因为去中心化已经成为一个流行术语,所以其定义很难完全固定。我们将自由市场看作去中心化的基本形式,并将对进入自由市场设置障碍看作是所有中心化的基础。像任何事物一样,中心化有程度之分,所以我们把授权股权证明机制与其它方案的中心化程度进行对比。

2.5.1 比特币
比特币系统目前正以授权工作量证明(Delegated Proof of Work, DPOW)为基础而运行,因此有大约10名代表控制了绝大多数的哈希算力。在那些为其竞争而能使用规模经济进行无收益挖矿的人手中,哈希算力本身就是中心化的。最后,工作量证明机制为进入市场设置障碍,使得“在职”的区块制造者无法轻易被取代。与比特币系统相比,DPOS在区块生产方面至少去中西化了10倍,并且也许在市场竞争方面去中心化了无数倍。
尽管在哈希算力方面有一定量的去中心化,当想到掌控比特币系统的股东(比特币持有者)所持股份的占比,我们认为比特币系统是最中心化的。如果你考虑使用比特币体系的用户总数,其中参与挖矿的人很可能少于百分之一。

2.5.2 点点币
点点币是一个混合系统,所以它由于工作量证明机制而是部分中心化的。和比特币系统一样,它也有矿池。与比特币相比,点点币无疑是更去中心化的,然而,因为股权证明机制矿池需要用户保持他们的电脑在线且钱包解锁,只有一小部分的股东参与了任何形式的挖矿。

2.5.3 未来币
未来币使用透明锻造,以确定的选出下一个制造节点。可以将其类比为,使用授权股权证明机制但你只能将你的投票权授予你自己,而你获得锻造区块机会的频率直接取决于你的账户余额。在这个意义上来说,未来币比点点币和比特币更为去中心化。但由于对安全风险的顾虑以及事实上大多数常规用户不会整天开启他们的电脑来籍此获得锻造机会方面的优势,它仍然遭受着少的可怜的挖矿参与度。
从这个角度来讲,我们可以断定未来币网络是由一小部分股东来保障网络安全的。事实上,如果你不上线投票,那么你将失去你的选票。为了解决这个问题,一些未来币用户用他们的股权建立股权池,并信任第三方来为他们挖矿。这是以一种形式的授权股权证明来提高股东参与度,但这也使他们的账户余额在他们参加这些矿池时承受风险。

3.0 攻击
一般而言,网络必须抵御两种类型的攻击:拒绝服务攻击和双重支付攻击。一个攻击者通过不把一些或全部的交易加入总账来进行拒绝服务攻击。这种攻击可以由任何拥有51%网络(无论比特币、未来币或其它)的人进行。而利用在网络正试图达成共识时的短期优势,可以进行双重支付攻击。
为抵御这些攻击,网络必须使51%的股东尽快达成协议。

3.1 防止排除交易
拥有全部经股东投票选出的100名代表,并且按要求轮流生产区块,意味着任何一笔由至少1%的股东批准的交易能够在30分钟内加入总账。这意味着没有代表可以通过将投票支持其他代表的交易排除在外来获取利益。

3.2 将一些代表的权力中心化
与其所被授权的投票权无关,这前100人所获得的权力权重是相同的,每名代表都有一份相等的投票权。因此,无法通过获得超过1%的选票而将权力集中到一个单一代表手上。
个人或者组织控制区块链的多名代表是有可能的。但是这个过程将需要欺骗很大比例的股东数去支持“傀儡”。
即使可以建立这51%傀儡,他们扰乱网络的能力仍将是有限的、能够被快速识别快速纠正的。没有工作量证明机制设置的进入障碍,占据多数的诚实用户会把攻击鉴别出来,然后将代码分叉并无视攻击者生产的区块。这种攻击可以扰乱网络,但不会是致命的。

3.3 针对代表的分布式拒绝服务攻击(DDOS)
因为只有100名代表,   可以想象一个攻击者对每名轮到生产区块的代表依次进行拒绝服务攻击。幸运的是,由于事实上每名代表的标识是其公钥而非IP地址,这种特定攻击的威胁很容易被减轻。这将使确定DDOS攻击目标更为困难。而代表之间的潜在直接连接,将使妨碍他们生产区块变得更为困难。

4.0 基于交易的股权证明机制(TaPOS)
代表制是一个短时间内达成坚固共识的高效方式,而TaPOS为股东们提供了一个长效机制来直接批准他们的代表的行为。平均而言,51%的股东在6个月内会直接确认每个区块。而取决于活跃流通的股份所占的比例,差不多10%的股东可以在几天内确认区块链。这种直接确认保障了网络的长期安全,并使所有的攻击尝试变得极度清晰易见。

5.0 高质量的服务
假设一个DPOS系统拥有10亿美元的市场总量,平均每年的交易费为0.25%,代表们合计获得所有交易费的10%,那么每名代表每年能获得25,000美元以使其节点保持在线。
这是一个利润可观的角色,许多人将为获取它持续竞争。这意味着每个想要获得这份工作的人都会想方设法从拥有这份工作的人那里把它“偷走”。为做到这点,他们将对代表行为进行统计学分析,以找到对于标准算法的任何偏离行为。一旦找到这种偏离,他们就能有希望赢得一些选票。
那些拥有这份工作的人,可能会全力以赴地证明他们正在按标准软件运行。他们越有效地证明其对区块生产的正直性,越有可能保住他们的工作。你可以想象开发者会很快制作出系统,代表们可以通过这些系统快速证明哪些交易得到了广泛的散播。
事实上,市场竞争将产生用以证明代表们的正直性与可靠性的最具创造性的解决方案。让网络变得更安全的工作可以获得很多收益,而尝试绕轮网络则得不到什么好处。

6.0 结论
DPOS流程与TaPOS结合所产生的网络,其网络共识的可证明性将至少3倍于比特币、点点币及未来币网络。DPOS能够更快地达成共识,同时消除随机小股东带来小规模干扰的可能性。经济激励确保了代表们致力于证明他们有良好行为,并可能采用类似于瑞波系统的共识算法(来实现这种证明)。DPOS,事实上,是一种通过无网络分叉之虞的去中心化方式来产生瑞波特殊节点列表的方法。 查看全部
授权股权证明机制白皮书
(Delegated Proof-of-Stake ,DPOS)
作者: Daniel Larimer
April 3, 2014
翻译:yidaidaxia_郝晓曦
比特坊数字资产研究俱乐部 翻译作品(www.bitfarm.io)

摘要
本白皮书介绍一种股权证明机制的新实现方式,该方式可以对交易进行秒级验证,并且能够在更短的时间内提供比现有任何股权证明系统都更好的安全性。在比特币网络产生一个区块的时间过后,一个授权股权证明系统(DPOS)能使你的交易得到20%股东的核实,而在比特币网络声明交易已几乎不可逆(6个区块,约1小时)的时间过后,在DPOS机制下,通过其代表,你的交易已经得到100%股东的核实。

1.0 背景
分布式交易总账需要在尽可能短的时间内做到安全、明确及不可逆,便于提供一个最坚实且去中心化的系统。在实践中,该流程分为两个方面:选择一个独特的节点来产生一个区块,并使得交易总账不可逆。

1.1 工作量证明机制(Proof of Work, POW)
第一个成功解决该问题的尝试是比特币系统(Bitcoin),比特币系统使用工作量证明机制使更长总账的产生具有计算性难度。工作量证明机制就好比是乐透,平均每10分钟有一个节点找到一个区块。如果两个节点在同一个时间找到区块,那么网络将根据后续节点的决定来确定以哪个区块构建总账。从统计学角度讲,一笔交易在6个区块(约1个小时)后被认为是明确确认且不可逆的。然而,核心开发者认为,需要120个区块(约一天),才能充分保护网络不受来自潜在更长的已将新产生的币花掉的攻击区块链的威胁。
尽管出现更长的区块链会变得不太可能,但任何拥有巨大经济资源的人都仍有可能制造一个更长的区块链或者具备足够的哈希算力来冻结用户的账户。

1.2 股权证明机制(Proof of Stake, POS)
股权证明机制已有很多不同变种,但基本概念是产生区块的难度应该与你在网络里所占的股权(所有权占比)成比例。到目前为止,已有两个系统开始运行:点点币(Peercoin)和未来币(NXT)。点点币使用一种混合模式,用你的股权调整你的挖矿难度。未来币使用一个确定性算法以随机选择一个股东来产生下一个区块。未来币算法基于你的账户余额来调整你被选中的可能性。
未来币和点点币都分别解决了谁来生产下一个区块的问题,但他们没有找到在适当的时间内使区块链具备不可逆的安全性的方法。根据我们能找到的信息,做到这点,点点币需要至少6个区块(约一小时),未来币需要10个区块。我们找不到在10个区块后未来币能提供什么级别安全性的根据。
我们之前发布了基于交易的股权证明机制(Transactions as Proof of Stake, TaPOS)的白皮书,在该机制中,每笔交易都包含区块链中前一个区块的哈希值。通过该系统,对任何人而言,网络变得越来越安全而不可逆,因为最终每个区块都经过了股东投票。股权证明机制面临的挑战是它没有定义谁来产生下一个区块。

1.3 瑞波共识机制(Ripple Consensus)
瑞波共识算法,使一组节点能够基于特殊节点列表达成共识。初始特殊节点列表就像一个俱乐部,要接纳一个新成员,必须由51%的该俱乐部会员投票通过。共识遵循这核心成员的51%权力,外部人员则没有影响力。由于该俱乐部由“中心化”开始,它将一直是“中心化的”,而如果它开始腐化,股东们什么也做不了。与比特币及点点币一样,瑞波系统将股东们与其投票权隔开,并因此比其他系统更中心化。

2.0 授权股权证明机制(DPOS)
当使用去中心化自治公司(Decentralized Autonomous Company, DAC)这一说法时,去中心化表示每个股东按其持股比例拥有影响力,51%股东投票的结果将是不可逆且有约束力的。其挑战是通过及时而高效的方法达到51%批准。
为达到这个目标,每个股东可以将其投票权授予一名代表。获票数最多的前100位代表按既定时间表轮流产生区块。每名代表分配到一个时间段来生产区块。所有的代表将收到等同于一个平均水平的区块所含交易费的10%作为报酬。如果一个平均水平的区块含有100股作为交易费,一名代表将获得1股作为报酬。
网络延迟有可能使某些代表没能及时广播他们的区块,而这将导致区块链分叉。然而,这不太可能发生,因为制造区块的代表可以与制造前后区块的代表建立直接连接。建立这种与你之后的代表(也许也包括其后的那名代表)的直接连接是为了确保你能得到报酬。
该模式可以每30秒产生一个新区块,并且在正常的网络条件下区块链分叉的可能性极其小,即使发生也可以在几分钟内得到解决。

2.1 成为一名代表
成为一名代表,你必须在网络上注册你的公钥,然后分配到一个32位的特有标识符。然后该标识符会被每笔交易数据的“头部”引用。

2.2 授权你的选票
每个钱包有一个参数设置窗口,在该窗口里用户可以选择一个或更多的代表,并将其分级。一经设定,用户所做的每笔交易将把选票从“输入代表”转移至“输出代表”。一般情况下,用户不会创建特别以投票为目的的交易,因为那将耗费他们一笔交易费。但在紧急情况下,某些用户可能觉得通过支付费用这一更积极的方式来改变他们的投票是值得的。 

2.3 保持代表诚实
每个钱包将显示一个状态指示器,让用户知道他们的代表表现如何。如果他们错过了太多的区块,那么系统将会推荐用户去换一个新的代表。如果任何代表被发现签发了一个无效的区块,那么所有标准钱包将在每个钱包进行更多交易前要求选出一个新代表。

2.4 解决区块链分叉
和工作量证明系统及其他股权证明系统一样,最佳区块链是最长的有效区块链。任何时候,一名代表错过签发一个区块的机会,该区块链将比潜在竞争对手短。只要在你的交易被写入区块后的100个区块中的51%被生产出来了,那么你就可以安全地认为你在主区块链上。
也许,在防止区块链分叉所导致的损失方面,最重要的事是在事发后第一时间得知消息。因为代表们通过生产区块得到很好的报酬,他们将保持接近100%的在线时间来防止因被投票罢免而损失收入。你可以安全地认为如果在过去的10个区块中,有一两个区块错过生产,则互联网的某些部分可能正发生连接问题,那么用户应该对此特别警觉并要求额外的确认数。如果10区块中有超过5个错过生产,那么这意味着你很可能在一条支链上,因此应该停止所有交易,直到分叉得到解决。
以一种及时的方式(少于5分钟)简单地发现并警示用户网络分叉,是可以最小化潜在损失的非常重要的能力。而知道你是否正处在一条支链上则更为重要。

2.5 100名代表是去中心化的吗?
因为去中心化已经成为一个流行术语,所以其定义很难完全固定。我们将自由市场看作去中心化的基本形式,并将对进入自由市场设置障碍看作是所有中心化的基础。像任何事物一样,中心化有程度之分,所以我们把授权股权证明机制与其它方案的中心化程度进行对比。

2.5.1 比特币
比特币系统目前正以授权工作量证明(Delegated Proof of Work, DPOW)为基础而运行,因此有大约10名代表控制了绝大多数的哈希算力。在那些为其竞争而能使用规模经济进行无收益挖矿的人手中,哈希算力本身就是中心化的。最后,工作量证明机制为进入市场设置障碍,使得“在职”的区块制造者无法轻易被取代。与比特币系统相比,DPOS在区块生产方面至少去中西化了10倍,并且也许在市场竞争方面去中心化了无数倍。
尽管在哈希算力方面有一定量的去中心化,当想到掌控比特币系统的股东(比特币持有者)所持股份的占比,我们认为比特币系统是最中心化的。如果你考虑使用比特币体系的用户总数,其中参与挖矿的人很可能少于百分之一。

2.5.2 点点币
点点币是一个混合系统,所以它由于工作量证明机制而是部分中心化的。和比特币系统一样,它也有矿池。与比特币相比,点点币无疑是更去中心化的,然而,因为股权证明机制矿池需要用户保持他们的电脑在线且钱包解锁,只有一小部分的股东参与了任何形式的挖矿。

2.5.3 未来币
未来币使用透明锻造,以确定的选出下一个制造节点。可以将其类比为,使用授权股权证明机制但你只能将你的投票权授予你自己,而你获得锻造区块机会的频率直接取决于你的账户余额。在这个意义上来说,未来币比点点币和比特币更为去中心化。但由于对安全风险的顾虑以及事实上大多数常规用户不会整天开启他们的电脑来籍此获得锻造机会方面的优势,它仍然遭受着少的可怜的挖矿参与度。
从这个角度来讲,我们可以断定未来币网络是由一小部分股东来保障网络安全的。事实上,如果你不上线投票,那么你将失去你的选票。为了解决这个问题,一些未来币用户用他们的股权建立股权池,并信任第三方来为他们挖矿。这是以一种形式的授权股权证明来提高股东参与度,但这也使他们的账户余额在他们参加这些矿池时承受风险。

3.0 攻击
一般而言,网络必须抵御两种类型的攻击:拒绝服务攻击和双重支付攻击。一个攻击者通过不把一些或全部的交易加入总账来进行拒绝服务攻击。这种攻击可以由任何拥有51%网络(无论比特币、未来币或其它)的人进行。而利用在网络正试图达成共识时的短期优势,可以进行双重支付攻击。
为抵御这些攻击,网络必须使51%的股东尽快达成协议。

3.1 防止排除交易
拥有全部经股东投票选出的100名代表,并且按要求轮流生产区块,意味着任何一笔由至少1%的股东批准的交易能够在30分钟内加入总账。这意味着没有代表可以通过将投票支持其他代表的交易排除在外来获取利益。

3.2 将一些代表的权力中心化
与其所被授权的投票权无关,这前100人所获得的权力权重是相同的,每名代表都有一份相等的投票权。因此,无法通过获得超过1%的选票而将权力集中到一个单一代表手上。
个人或者组织控制区块链的多名代表是有可能的。但是这个过程将需要欺骗很大比例的股东数去支持“傀儡”。
即使可以建立这51%傀儡,他们扰乱网络的能力仍将是有限的、能够被快速识别快速纠正的。没有工作量证明机制设置的进入障碍,占据多数的诚实用户会把攻击鉴别出来,然后将代码分叉并无视攻击者生产的区块。这种攻击可以扰乱网络,但不会是致命的。

3.3 针对代表的分布式拒绝服务攻击(DDOS)
因为只有100名代表,   可以想象一个攻击者对每名轮到生产区块的代表依次进行拒绝服务攻击。幸运的是,由于事实上每名代表的标识是其公钥而非IP地址,这种特定攻击的威胁很容易被减轻。这将使确定DDOS攻击目标更为困难。而代表之间的潜在直接连接,将使妨碍他们生产区块变得更为困难。

4.0 基于交易的股权证明机制(TaPOS)
代表制是一个短时间内达成坚固共识的高效方式,而TaPOS为股东们提供了一个长效机制来直接批准他们的代表的行为。平均而言,51%的股东在6个月内会直接确认每个区块。而取决于活跃流通的股份所占的比例,差不多10%的股东可以在几天内确认区块链。这种直接确认保障了网络的长期安全,并使所有的攻击尝试变得极度清晰易见。

5.0 高质量的服务
假设一个DPOS系统拥有10亿美元的市场总量,平均每年的交易费为0.25%,代表们合计获得所有交易费的10%,那么每名代表每年能获得25,000美元以使其节点保持在线。
这是一个利润可观的角色,许多人将为获取它持续竞争。这意味着每个想要获得这份工作的人都会想方设法从拥有这份工作的人那里把它“偷走”。为做到这点,他们将对代表行为进行统计学分析,以找到对于标准算法的任何偏离行为。一旦找到这种偏离,他们就能有希望赢得一些选票。
那些拥有这份工作的人,可能会全力以赴地证明他们正在按标准软件运行。他们越有效地证明其对区块生产的正直性,越有可能保住他们的工作。你可以想象开发者会很快制作出系统,代表们可以通过这些系统快速证明哪些交易得到了广泛的散播。
事实上,市场竞争将产生用以证明代表们的正直性与可靠性的最具创造性的解决方案。让网络变得更安全的工作可以获得很多收益,而尝试绕轮网络则得不到什么好处。

6.0 结论
DPOS流程与TaPOS结合所产生的网络,其网络共识的可证明性将至少3倍于比特币、点点币及未来币网络。DPOS能够更快地达成共识,同时消除随机小股东带来小规模干扰的可能性。经济激励确保了代表们致力于证明他们有良好行为,并可能采用类似于瑞波系统的共识算法(来实现这种证明)。DPOS,事实上,是一种通过无网络分叉之虞的去中心化方式来产生瑞波特殊节点列表的方法。

大家都能看懂的 EOS 知识

EOS其他相关admin 发表了文章 • 0 个评论 • 701 次浏览 • 2017-10-26 15:37 • 来自相关话题

作者是老猫的同事,这篇是他写了发给他的朋友们看的,我觉得写得非常好,推荐给大家,哪怕你还是个小白,只要有耐心,也能大致看明白。对于商业未来的见解,很多时候都是用心的结果。


如果您喜欢,欢迎打赏,我将全部转给作者。







在过去一个多月,包括中国在内的各国政府相继对区块链行业采取了不同的监管政策。相对于中国政府对比特币交易所和ICO采取的严厉监管政策,日本政府对比特币交易采取的开方友好政策奠定了日本在今后全球区块链发展浪潮当中的市场地位。虽然各类区块链应用代币的市场价格受政策影响起起落落,但伴随着比特币突破 5000 美金,区块链兴起的大趋势已经逐步展现。

 

区块链所带来的并不仅仅是比特币这一全球化数字货币,或是各类去中心化应用(Decentralized Application)。在信息和大数据时代,区块链这一技术最重要的地位来自于它重新建立的信息和价值传播结构。

 

在区块链行业生态当中,一个能够满足商业需求、高效的区块链公共应用平台是必不可少,并占有极其重要的地位。以太坊(Ethereum)的兴起以及在今年上半年的爆发性增长,为我们提供了一个绝佳的参考范例。然而,不得不承认的是,整个区块链行业还处于一个在初期完善基础架构的阶段,现阶段阻碍区块链大规模应用的最大障碍存在于技术上。目前以太坊的机制以及运行效率,很难支持一个庞大的去中心化商业应用生态。

 

简略地说,一个成熟的区块链公共应用平台至少需要满足以下条件:

 

 在低延迟的基础上支持大规模用户

 提供免费服务

 便利地升级与 Bug 恢复

 

不幸的是,从目前的情况来看,以太坊很难能够满足这三个条件。首先:以太坊现阶段能够处理每秒5笔左右的交易。虽然以太坊创始人 Vitalik 在上个月的一次会议上表述以太坊 + Plasma 的扩容方案能够使以太坊的交易处理能力与 Visa 相媲美,但为了达成这个目标,以太坊还需要进行相当复杂的升级。

 

第二:在以太坊的机制下,每笔转账以及智能合约的运行,都需要消耗以太币,这是以太币作为以太坊系统代币的价值来源。然而,在很多商业应用下,免费服务对于用户体验是非常必要的。在用户不必因使用区块链应用平台而付出费用的基础上,平台将发展更大的用户规模。而在这一模式下,应用开发者也完全能够创建其特有的盈利模式。

 

第三:区块链应用平台需要为开发者提供便捷地修复 bug 的机制。在区块链和智能合约上面,代码即法律,然而代码之中存在 bug 是无法避免的。一个区块链底层平台和智能合约在遭遇 bug 时无法无法及时修复是一个非常可怕且失去用户信任的情况。

 

在这样的情况下,我们判断,虽然以太坊极其成功地普及了链上智能合约的技术并建立了包含各类区块链应用和 ERC-20 代币的庞大生态,但它远未发展为能够满足现实商业需求的应用平台。限制它商业发展的阻碍存在于其技术机制。

 

为什么我们认为 EOS 有潜力成为一个更为完善的区块链公共应用平台?因为 EOS 能够解决我们以上提出的三个条件。

 

首先:EOS 的 DPOS 共识算法和石墨烯底层工具组能够满足每秒上万次,甚至每秒上百万次交易请求的企业级应用需求。石墨烯底层工具处理高频数据的能力已经通过 EOS 技术负责人Daniel Larime 之前创立的两个项目 BTS 和 STEEM 得到充分的印证。更加值得注意的是:以太坊是一条公共区块链,在以太坊链上运行的每一个应用都会消耗整条链的资源;而 EOS 并不是一条公链,它是一个区块链基础架构,开发者可以在 EOS 架构上自由创建自己的公链。链与链之间不会影响彼此的资源使用,不会出现平台因个别消耗资源巨大的应用而造成大面积的网络拥堵。

 

第二:在 EOS 上转账交易与运行智能合约并不需要消耗 EOS 系统代币。在 EOS 系统当中,有三大类资源被应用程序消耗:带宽和日志存储(磁盘),计算和计算积压(CPU),以及状态存储器(RAM)。这些资源根据账户持有 EOS 数量来分配,这也是 EOS 系统代币的价值来源。这种和以太坊不同的运作机制将满足更多的商业场景应用,并吸引更大数量级别的用户。

 

第三:EOS 建立的约束性合约(被称作 EOS “宪法”)定义了仅依靠代码无法完全执行的用户间义务。该合约还定义了源代码协议的人类可读性意图。当出现系统错误时,人类可读性意图可用于区分此错误是否确实为 bug,并判断社区的修复举措是否得当。而当系统面临一个漏洞时,区块生产者还可以加速变更约束性合约。

 

另外,EOS 的跨链交互和虚拟机独立架构都有许多可圈可点的机制。比如 EOS 设置的以太虚拟机(EVM),能够支持现有在以太坊运行的智能合约。现存在于以太坊的区块链应用,通过添加少量适配,就能够在 EOS 系统上运行。

 

我们可以说,EOS 的设计原理十分符合区块链公共平台的商业运行逻辑,而它的核心技术机制经过了很大程度的实践证实,代表了区块链技术的根本进步。可以预见,在 2018 年 6 月 1 日 EOS 代币分发结束,并推出 1.0 版本网络之后,整个区块链行业将迎来崭新的商业应用浪潮。
 
原文转自公众号猫说 查看全部

DQmcCXL82K7Fa8BXJBeLCYGJf1MyerTiyfeXwtkCe7wiTiw_1680x8400.png


作者是老猫的同事,这篇是他写了发给他的朋友们看的,我觉得写得非常好,推荐给大家,哪怕你还是个小白,只要有耐心,也能大致看明白。对于商业未来的见解,很多时候都是用心的结果。


如果您喜欢,欢迎打赏,我将全部转给作者。







在过去一个多月,包括中国在内的各国政府相继对区块链行业采取了不同的监管政策。相对于中国政府对比特币交易所和ICO采取的严厉监管政策,日本政府对比特币交易采取的开方友好政策奠定了日本在今后全球区块链发展浪潮当中的市场地位。虽然各类区块链应用代币的市场价格受政策影响起起落落,但伴随着比特币突破 5000 美金,区块链兴起的大趋势已经逐步展现。

 

区块链所带来的并不仅仅是比特币这一全球化数字货币,或是各类去中心化应用(Decentralized Application)。在信息和大数据时代,区块链这一技术最重要的地位来自于它重新建立的信息和价值传播结构。

 

在区块链行业生态当中,一个能够满足商业需求、高效的区块链公共应用平台是必不可少,并占有极其重要的地位。以太坊(Ethereum)的兴起以及在今年上半年的爆发性增长,为我们提供了一个绝佳的参考范例。然而,不得不承认的是,整个区块链行业还处于一个在初期完善基础架构的阶段,现阶段阻碍区块链大规模应用的最大障碍存在于技术上。目前以太坊的机制以及运行效率,很难支持一个庞大的去中心化商业应用生态。

 

简略地说,一个成熟的区块链公共应用平台至少需要满足以下条件:

 

 在低延迟的基础上支持大规模用户

 提供免费服务

 便利地升级与 Bug 恢复

 

不幸的是,从目前的情况来看,以太坊很难能够满足这三个条件。首先:以太坊现阶段能够处理每秒5笔左右的交易。虽然以太坊创始人 Vitalik 在上个月的一次会议上表述以太坊 + Plasma 的扩容方案能够使以太坊的交易处理能力与 Visa 相媲美,但为了达成这个目标,以太坊还需要进行相当复杂的升级。

 

第二:在以太坊的机制下,每笔转账以及智能合约的运行,都需要消耗以太币,这是以太币作为以太坊系统代币的价值来源。然而,在很多商业应用下,免费服务对于用户体验是非常必要的。在用户不必因使用区块链应用平台而付出费用的基础上,平台将发展更大的用户规模。而在这一模式下,应用开发者也完全能够创建其特有的盈利模式。

 

第三:区块链应用平台需要为开发者提供便捷地修复 bug 的机制。在区块链和智能合约上面,代码即法律,然而代码之中存在 bug 是无法避免的。一个区块链底层平台和智能合约在遭遇 bug 时无法无法及时修复是一个非常可怕且失去用户信任的情况。

 

在这样的情况下,我们判断,虽然以太坊极其成功地普及了链上智能合约的技术并建立了包含各类区块链应用和 ERC-20 代币的庞大生态,但它远未发展为能够满足现实商业需求的应用平台。限制它商业发展的阻碍存在于其技术机制。

 

为什么我们认为 EOS 有潜力成为一个更为完善的区块链公共应用平台?因为 EOS 能够解决我们以上提出的三个条件。

 

首先:EOS 的 DPOS 共识算法和石墨烯底层工具组能够满足每秒上万次,甚至每秒上百万次交易请求的企业级应用需求。石墨烯底层工具处理高频数据的能力已经通过 EOS 技术负责人Daniel Larime 之前创立的两个项目 BTS 和 STEEM 得到充分的印证。更加值得注意的是:以太坊是一条公共区块链,在以太坊链上运行的每一个应用都会消耗整条链的资源;而 EOS 并不是一条公链,它是一个区块链基础架构,开发者可以在 EOS 架构上自由创建自己的公链。链与链之间不会影响彼此的资源使用,不会出现平台因个别消耗资源巨大的应用而造成大面积的网络拥堵。

 

第二:在 EOS 上转账交易与运行智能合约并不需要消耗 EOS 系统代币。在 EOS 系统当中,有三大类资源被应用程序消耗:带宽和日志存储(磁盘),计算和计算积压(CPU),以及状态存储器(RAM)。这些资源根据账户持有 EOS 数量来分配,这也是 EOS 系统代币的价值来源。这种和以太坊不同的运作机制将满足更多的商业场景应用,并吸引更大数量级别的用户。

 

第三:EOS 建立的约束性合约(被称作 EOS “宪法”)定义了仅依靠代码无法完全执行的用户间义务。该合约还定义了源代码协议的人类可读性意图。当出现系统错误时,人类可读性意图可用于区分此错误是否确实为 bug,并判断社区的修复举措是否得当。而当系统面临一个漏洞时,区块生产者还可以加速变更约束性合约。

 

另外,EOS 的跨链交互和虚拟机独立架构都有许多可圈可点的机制。比如 EOS 设置的以太虚拟机(EVM),能够支持现有在以太坊运行的智能合约。现存在于以太坊的区块链应用,通过添加少量适配,就能够在 EOS 系统上运行。

 

我们可以说,EOS 的设计原理十分符合区块链公共平台的商业运行逻辑,而它的核心技术机制经过了很大程度的实践证实,代表了区块链技术的根本进步。可以预见,在 2018 年 6 月 1 日 EOS 代币分发结束,并推出 1.0 版本网络之后,整个区块链行业将迎来崭新的商业应用浪潮。
 
原文转自公众号猫说

缺失的白皮书:DPOS共识算法工作原理及鲁棒性根源分析

EOS其他相关郑浩 发表了文章 • 0 个评论 • 369 次浏览 • 2017-10-17 13:32 • 来自相关话题

雷锋网(公众号:雷锋网)按:本文发表于Steem,作者是dantheman。译者是万云首席技术官奚海峰,首发公众号万云BaaS。奚海峰曾任IBM研究院工程师和高级咨询顾问,Sempra Commodities 主管架构师及 Tudor Investment 软件开发主管。在美国12年间,获得了包括“IBM 研究成就奖”在内的多次嘉奖,在一流国际会议和杂志上发表过多篇学术论文,并且持有美国发明专利。雷锋网已获授权转载。

这篇“缺失的白皮书”是对委托权益证明(DPOS)的分析,目的是为DPOS的工作原理及其鲁棒性根源提供一个分析。DPOS的早期描述可以在bitshares.org找到。不过,那个描述还包含了许多不属于实际共识过程的内容。

所有区块链本质上都是一种由交易驱动的确定性状态机。共识是商定确定性交易顺序和过滤无效交易的过程。有许多不同的共识算法都可以产生等效的交易排序,但DPOS已经通过在多个区块链上经年累月的可靠运行证明自身是健壮、安全和有效的。

像所有共识算法一样,块生产者可能导致的最大损害是审查。所有块的有效性必须基于确定性的开源状态机逻辑。

DPOS算法概要

DPOS算法分为两部分:选择一组块生产者和调度生产。选举过程确保利益相关方最终得到控制,因为当网络不能顺利运行时,利益相关方的损失最大。选举方法对实际运行中如何达成共识几乎没有影响,因此,本文将重点介绍如何在块生产者被选择之后达成共识。

为了帮助解释这个算法,我想假设3个块生产者A,B和C。因为共识(的达成)需要2/3+1多数来解决所有情况,这个简化的模型将假设生产者C是打破僵局的那个人。在现实世界中,将有21个或更多的块生产者。像工作量证明一样,一般规则是最长链胜出。任何时候当一个诚实的对等节点看到一个有效的更长链,它都会从当前分叉切换到更长的这条链。

我将举例说明在大多数想得到的网络条件下DPOS如何运行。这些例子应该可以帮助您理解为什么DPOS稳健且难以破坏。

正常操作

在正常操作模式下,块生产者每3秒钟轮流生成一个块。假设没有人错过自己的轮次,那么这将产生最长链。块生产者在被调度轮次之外的任何时间段出块都是无效的。





 
少数分叉

不超过节点总数三分之一的恶意或故障节点可能创建少数分叉。在这种情况下,少数分叉每9秒只能产生一个块,而多数分叉每9秒可以产生两个块。这样,诚实的2/3多数将永远比少数(的链)更长。





 
离线少数的多重生产

(离线的)少数人可以试图产生无限数量的分叉,但是他们的所有分叉都将比多数人的那条链短,因为少数人在出块速度上注定比多数人来的更慢。





 
网络碎片化

网络完全有可能碎片化,导致没有任何分叉拥有多数块生成者。在这种情况下,最长的链将倒向最大的那个少数群体。当网络连通性恢复时,较小的少数群体会自然切换到最长的那条链,明确的共识将恢复。





 
有可能存在这样三个分叉,其中两个最长的分叉长度相同。在这种情况下,第3个(较小)分叉的块生产者重新加入网络时会打破平局。块生产者总数为奇数,因此不可能长时间保持平局。稍后我们还会讲到生产者“洗牌”,它使得出块顺序随机化,从而确保即使是生产者数目相同的两个分叉也会以不同的步长增长,最终导致一个分叉超过另一个。
 
在线少数的多重生产

在这种场景下,少数节点B在其时间段内产生了两个或更多可供选择的块。下一个计划生产者(C)可以选择基于B产生的任何一种方案继续构建链条。一旦如此,这个选择就成为最长的链,而所有选择B1的节点都将切换分叉。少数不良生产者企图广播再多的替代块也无关紧要,它们作为最长链的一部分永远不会超过一轮。
 





 
最后不可逆块

在网络碎片化的情况下,多个分叉都有可能持续不断增长相当长的时间。长远来看最长的链终将获胜,但观察者需要一种确切的手段来判定一个块是否绝对处于增长最快的那条链。这可以通过观察来自2/3+1多数块生产者的确认来决定。

在下图中,块B已被C和A所确认,这代表了2/3+1多数确认,由此我们可以推断没有其它链会比这个更长 – 如果2/3的生产者是诚实的。
 





 
请注意,这个“规则”类似于比特币的6块确认“规则”。一些聪明人也许可以谋划一系列事件使得两个节点(应该是“交易”?)出现在不同的最后不可逆块上。这种边缘案例要求攻击者能完全控制通信延迟,并且在几分钟内两次--而不是一次--使用该控制。即便这真的发生了,那么最长链(胜出)的长期规则仍然适用。我们估计这种攻击的可能性足够接近0,且经济后果无关紧要,因此不足为虑。

生产者法定人数不足

在缺乏明晰的生产者法定人数这种不太可能的情况下,少数人还是可以继续出块。利益相关方可以在这些块里包括更改投票的交易。这些投票可以选出一组新的生产者,并将出块参与率恢复到100%。一旦如此,少数链将最终超过所有其他以低于100%参与率运行的链。


在此过程中,所有观察者都会知道,在一条参与率超过67%的链形成之前,网络状态是不定的。那些选择在此条件下进行交易的人所冒的风险与选择接受不到6个确认的人相似。他们知道存在这样一些小的可能性,即:共识也许最终在一个不同的分叉上建立起来。在实践中,这种情况比接受少于3个比特币交易确认的块要安全多了。

多数生产者舞弊

如果多数生产者变得腐败,那么他们可以产生无限数量的分叉,每个分叉都看起来以2/3多数确认向前走。这种情况下,最后不可逆块算法蜕变为最长链算法。最长链就是为最大多数所批准的那条链,而这将由少数剩下的诚实节点决定。这种行为不会持续很长时间,因为利益相关方最终会投票替换生产者。
 





 
交易作为权益证明(TaPoS)

当用户为一个交易签名时,他们是在对区块链状态的一定假设下这样做的。这个假设是基于他们对最近几个块的看法。如果最长链的共识发生改变,则潜在会使签名者之前的假设失效。


就TaPoS而言,所有交易都包含最近一个块的散列,如果该块在链历史中不存在则这些交易被认为是无效的。任何在孤儿分叉上给交易签名的人,都会发现该交易无效且无法迁移到主分叉。

该过程的一个附带作用是可以抵御试图产生替代链的长期攻击。每个利益相关方在每次交易时都直接对区块链做出确认。随着时间推移,所有的块都是由所有利益相关方确认过的,这在一条伪造链里是无法复制的。

确定性生产者洗牌

在上面所有例子中,我们展示的都是块生产者按循环调度出块。实际上,每出N个块(N是生产者数量),块生产者集合都会洗牌一次。这种随机性确保块生成者B不会总是忽略块生成者A,每当形成多个拥有相同数量生产者的分叉时,平局最终都会被打破。

结论

在每一个我们能想到的自然网络分裂的情况下,委托权益证明都是强健的,甚至在面对相当数量生产者舞弊的情形时也是安全的。不像其它共识算法,当大多数生产者不合格时,DPOS还是可以继续工作。在此过程中,社区可以投票替换掉不合格的生产者,直到恢复100%参与率。我还不知道有任何其它算法可以在如此高强度和变化多端的失败条件下依然保持强健。

说到底,DPOS引人注目的安全性来自于其选择块生产者和验证节点质量的算法。运用赞成投票的过程可以确保一个人即使拥有50%的有效投票权也不能独自挑选哪怕一个生产者。DPOS旨在优化拥有强壮网络连接的诚实节点100%参与(共识过程)的名义条件。这使得DPOS有能力在平均只有1.5秒的时间内以99.9%的确定性确认交易,同时以优雅和可检测的方式降级 – 从降级中恢复正常也不过是小事一桩。

其它共识算法以网络条件差的不诚实节点为名义条件展开设计,这样设计的最终结果就是性能更差、延迟更高、通信开销高的网络,而且这个网络在33%节点失效的情况下会完全停摆。

在BitShares成功运行三年以及在Steem运行一年期间,我们经历了各种各样的网络条件和软件错误。DPOS成功穿行于其间,在处理了比任何其它区块链更多交易的同时持续达成共识,展现了非凡的能力。
 
原文转自雷锋网 查看全部
雷锋网(公众号:雷锋网)按:本文发表于Steem,作者是dantheman。译者是万云首席技术官奚海峰,首发公众号万云BaaS。奚海峰曾任IBM研究院工程师和高级咨询顾问,Sempra Commodities 主管架构师及 Tudor Investment 软件开发主管。在美国12年间,获得了包括“IBM 研究成就奖”在内的多次嘉奖,在一流国际会议和杂志上发表过多篇学术论文,并且持有美国发明专利。雷锋网已获授权转载。

这篇“缺失的白皮书”是对委托权益证明(DPOS)的分析,目的是为DPOS的工作原理及其鲁棒性根源提供一个分析。DPOS的早期描述可以在bitshares.org找到。不过,那个描述还包含了许多不属于实际共识过程的内容。

所有区块链本质上都是一种由交易驱动的确定性状态机。共识是商定确定性交易顺序和过滤无效交易的过程。有许多不同的共识算法都可以产生等效的交易排序,但DPOS已经通过在多个区块链上经年累月的可靠运行证明自身是健壮、安全和有效的。

像所有共识算法一样,块生产者可能导致的最大损害是审查。所有块的有效性必须基于确定性的开源状态机逻辑。

DPOS算法概要

DPOS算法分为两部分:选择一组块生产者和调度生产。选举过程确保利益相关方最终得到控制,因为当网络不能顺利运行时,利益相关方的损失最大。选举方法对实际运行中如何达成共识几乎没有影响,因此,本文将重点介绍如何在块生产者被选择之后达成共识。

为了帮助解释这个算法,我想假设3个块生产者A,B和C。因为共识(的达成)需要2/3+1多数来解决所有情况,这个简化的模型将假设生产者C是打破僵局的那个人。在现实世界中,将有21个或更多的块生产者。像工作量证明一样,一般规则是最长链胜出。任何时候当一个诚实的对等节点看到一个有效的更长链,它都会从当前分叉切换到更长的这条链。

我将举例说明在大多数想得到的网络条件下DPOS如何运行。这些例子应该可以帮助您理解为什么DPOS稳健且难以破坏。

正常操作

在正常操作模式下,块生产者每3秒钟轮流生成一个块。假设没有人错过自己的轮次,那么这将产生最长链。块生产者在被调度轮次之外的任何时间段出块都是无效的。

594d25d40ff4e.jpg

 
少数分叉

不超过节点总数三分之一的恶意或故障节点可能创建少数分叉。在这种情况下,少数分叉每9秒只能产生一个块,而多数分叉每9秒可以产生两个块。这样,诚实的2/3多数将永远比少数(的链)更长。

594d25e0ef536.jpg

 
离线少数的多重生产

(离线的)少数人可以试图产生无限数量的分叉,但是他们的所有分叉都将比多数人的那条链短,因为少数人在出块速度上注定比多数人来的更慢。

594d25ed4afbb.jpg

 
网络碎片化

网络完全有可能碎片化,导致没有任何分叉拥有多数块生成者。在这种情况下,最长的链将倒向最大的那个少数群体。当网络连通性恢复时,较小的少数群体会自然切换到最长的那条链,明确的共识将恢复。

594d2608b7c7c.jpg

 
有可能存在这样三个分叉,其中两个最长的分叉长度相同。在这种情况下,第3个(较小)分叉的块生产者重新加入网络时会打破平局。块生产者总数为奇数,因此不可能长时间保持平局。稍后我们还会讲到生产者“洗牌”,它使得出块顺序随机化,从而确保即使是生产者数目相同的两个分叉也会以不同的步长增长,最终导致一个分叉超过另一个。
 
在线少数的多重生产

在这种场景下,少数节点B在其时间段内产生了两个或更多可供选择的块。下一个计划生产者(C)可以选择基于B产生的任何一种方案继续构建链条。一旦如此,这个选择就成为最长的链,而所有选择B1的节点都将切换分叉。少数不良生产者企图广播再多的替代块也无关紧要,它们作为最长链的一部分永远不会超过一轮。
 

594d26176c8a2.jpg

 
最后不可逆块

在网络碎片化的情况下,多个分叉都有可能持续不断增长相当长的时间。长远来看最长的链终将获胜,但观察者需要一种确切的手段来判定一个块是否绝对处于增长最快的那条链。这可以通过观察来自2/3+1多数块生产者的确认来决定。

在下图中,块B已被C和A所确认,这代表了2/3+1多数确认,由此我们可以推断没有其它链会比这个更长 – 如果2/3的生产者是诚实的。
 

594d262e2719c.jpg

 
请注意,这个“规则”类似于比特币的6块确认“规则”。一些聪明人也许可以谋划一系列事件使得两个节点(应该是“交易”?)出现在不同的最后不可逆块上。这种边缘案例要求攻击者能完全控制通信延迟,并且在几分钟内两次--而不是一次--使用该控制。即便这真的发生了,那么最长链(胜出)的长期规则仍然适用。我们估计这种攻击的可能性足够接近0,且经济后果无关紧要,因此不足为虑。

生产者法定人数不足

在缺乏明晰的生产者法定人数这种不太可能的情况下,少数人还是可以继续出块。利益相关方可以在这些块里包括更改投票的交易。这些投票可以选出一组新的生产者,并将出块参与率恢复到100%。一旦如此,少数链将最终超过所有其他以低于100%参与率运行的链。


在此过程中,所有观察者都会知道,在一条参与率超过67%的链形成之前,网络状态是不定的。那些选择在此条件下进行交易的人所冒的风险与选择接受不到6个确认的人相似。他们知道存在这样一些小的可能性,即:共识也许最终在一个不同的分叉上建立起来。在实践中,这种情况比接受少于3个比特币交易确认的块要安全多了。

多数生产者舞弊

如果多数生产者变得腐败,那么他们可以产生无限数量的分叉,每个分叉都看起来以2/3多数确认向前走。这种情况下,最后不可逆块算法蜕变为最长链算法。最长链就是为最大多数所批准的那条链,而这将由少数剩下的诚实节点决定。这种行为不会持续很长时间,因为利益相关方最终会投票替换生产者。
 

594d2630cbd99.jpg

 
交易作为权益证明(TaPoS)

当用户为一个交易签名时,他们是在对区块链状态的一定假设下这样做的。这个假设是基于他们对最近几个块的看法。如果最长链的共识发生改变,则潜在会使签名者之前的假设失效。


就TaPoS而言,所有交易都包含最近一个块的散列,如果该块在链历史中不存在则这些交易被认为是无效的。任何在孤儿分叉上给交易签名的人,都会发现该交易无效且无法迁移到主分叉。

该过程的一个附带作用是可以抵御试图产生替代链的长期攻击。每个利益相关方在每次交易时都直接对区块链做出确认。随着时间推移,所有的块都是由所有利益相关方确认过的,这在一条伪造链里是无法复制的。

确定性生产者洗牌

在上面所有例子中,我们展示的都是块生产者按循环调度出块。实际上,每出N个块(N是生产者数量),块生产者集合都会洗牌一次。这种随机性确保块生成者B不会总是忽略块生成者A,每当形成多个拥有相同数量生产者的分叉时,平局最终都会被打破。

结论

在每一个我们能想到的自然网络分裂的情况下,委托权益证明都是强健的,甚至在面对相当数量生产者舞弊的情形时也是安全的。不像其它共识算法,当大多数生产者不合格时,DPOS还是可以继续工作。在此过程中,社区可以投票替换掉不合格的生产者,直到恢复100%参与率。我还不知道有任何其它算法可以在如此高强度和变化多端的失败条件下依然保持强健。

说到底,DPOS引人注目的安全性来自于其选择块生产者和验证节点质量的算法。运用赞成投票的过程可以确保一个人即使拥有50%的有效投票权也不能独自挑选哪怕一个生产者。DPOS旨在优化拥有强壮网络连接的诚实节点100%参与(共识过程)的名义条件。这使得DPOS有能力在平均只有1.5秒的时间内以99.9%的确定性确认交易,同时以优雅和可检测的方式降级 – 从降级中恢复正常也不过是小事一桩。

其它共识算法以网络条件差的不诚实节点为名义条件展开设计,这样设计的最终结果就是性能更差、延迟更高、通信开销高的网络,而且这个网络在33%节点失效的情况下会完全停摆。

在BitShares成功运行三年以及在Steem运行一年期间,我们经历了各种各样的网络条件和软件错误。DPOS成功穿行于其间,在处理了比任何其它区块链更多交易的同时持续达成共识,展现了非凡的能力。
 
原文转自雷锋网

从BM和V神互怼中,深入对比PoW和DPoS的共识机制!

EOS其他相关郑浩 发表了文章 • 0 个评论 • 615 次浏览 • 2017-10-17 13:21 • 来自相关话题

BM和V神都是区块链界中星光熠熠的天才明星。


Vitalik Buterin,以太坊(Ethereum)项目的创始人,币圈人称“小神童”、“V神”、“维维”。如今,Vitalik已然成为了币圈及链圈内最耀眼的人物之一。


Daniel larimer,币圈人称BM(bytemaster),比特股(BitShares)、Steem以及EOS项目的创始人,BM是区块链界中极少数的连续创业者,比特股(BitShares)、Steem这两个项目已成功运行。


今年8月份时媒体写了BM和V神互怼的文,我仔细分析,在他们的互怼中的最核心都是在怼PoW和DPoS这两种共识机制在去中心化,治理能力,资源费用,预防DOS攻击,共识周期等这几方面的对比。


1.PoW和DPoS,谁更中心化?


PoW






这是以太坊的区块生产节点分布图。你可以看到,两个矿池控制了51%的哈希算力,它们可以任意忽视其它所有矿池生产的区块,其中7个节点的哈希算力就达到了整个网络的90%。


而且,以太坊的完全节点也都是经过加强的,普通大众根本承受不起。所以,几乎所有的轻客户端根本不需要操心默克尔证明的问题,虽然Vitalik说默克尔证明多么的有价值。


在以太坊,他们单方面地制定决策,比如在DAO事件上;由于这个决策是由少数人制定的,没有大众参与,这就给予了内部人士不对等的交易机会。在这件事上,代码并非法律,操作者们才是。


PoW挖矿这种模式,比多数上市公司还中心化;硬件和电力现在都很便宜,这意味着矿池在投票权上是处于垄断地位的;现在比特币和以太坊都是这样。


当你把利益不同的人绑定到一起,不让代币持有人投票,由PoW导致的中心化,最终的结局就是寡头统治,而他们是不会对他们的行为负责任的。


如果你不允许代币持有人投票,这就表示你把受益者和决策制定者分开了。这样的话,制定出来的决策或许并不符合代币持有者的最大利益。比特币拓展的问题上看到过这一幕,数年来,矿工们控制了网络,收取高额费用。


投票的人并不是最后结果的直接受益者---这就是现在比特币和以太坊的组织方式。


DPoS


比特股、Steemit 以及EOS所使用的底层框架是石墨烯框架。石墨烯框架采用DPoS共识算法,平均出块速度1.5秒,出块节点(见证人)由持币用户选举投票产生,每个用户的投票权重则按照用户持币占系统总量比例计算。


全网持有代币的人可以通过投票系统来选择区块生产者,一旦当选任何人都可以参与区块的生产。


以EOS为例,预计每3秒生产一个区块。任何时刻,只有一个生产者被授权产生区块。如果在某个时间内没有成功出块,则跳过该块。


EOS架构中区块产生是以21个区块为一个周期。在每个出块周期开始时,21个区块生产者会被投票选出。前20名出块者首选自动选出,第21个出块者按所得投票数目对应概率选出。所选择的生产者会根据从块时间导出的伪随机数进行混合。以便保证出块者之间的连接尽量平衡。


事实是,对于矿工(节点提供者)来说,比特币和以太坊都比DPoS区块链更中心化。


2.治理能力对比


在PoW的共识机制下,矿工,Casper staker,矿池,股权池,基金会,完全节点,交易所都想占主导,而那些个人持币者却没有发言权。外部观察者根本无法知道这个特别委员会是否取得了共识。人们也就不确定共识的步骤是什么。


比如在ETC和BCC这些分叉,都是基金会和矿池组织双方的博弈,而我们这些个人持币者只是被通知的角色,是无参与决策权的。这样的治理算法则会导致特别委员会的治理模式,社区作出的决定会令个人持币者感到模糊不清的。


在DPoS模式下,治理的结构是清晰的,所有的股东都有发言权。这种治理的成本与共识过程是一致的,每个人都能知道治理的政策是什么,也知道他们该怎么参与。制定决策的时候,就很清楚,不会有二义性。不会有“意外分叉”,因为区块链很清楚新的硬分叉路径,旧的节点共识会通知他们“关停”,除非他们升级了。


在正常情况下,DPOS块链不会经历任何叉,因为块生产者合作生产区块而不是竞争。如果有区块分叉,共识将自动切换到最长的链条。具有更多生产者的区块链长度将比具有较少生产者的区块链增长速度更快。此外,没有块生产者应该同时在两个区块链分叉上生产块。如果一个块生产者发现这么做了,就可能被投票出局。


Bitshares成功运行了3年多,Steem也成功了1年多,性能达到每秒上千笔交易量,它们能降低交易费,还能进行19次无缝硬分叉,而这都归功于DPoS治理能力。


然而比特币和以太坊不久的将来还会面临分叉的问题。或许未来存在一种方法,能把矿工,股东,矿池,基金,完全节点,交易所和商标持有人聚到一起取得共识,然后强制他们遵守这个统一的治理架构。然而,现在还没有这种方案出现。


3.能源利用对比


PoW的核心要义为:算力越大,挖到块的概率越大,维护区块链安全的权重越大。相对其他共识机制而言,PoW逻辑简单,容易实现,容错达50%,其安全有严格的数学论证。但PoW最大的问题之一,被指责最多是浪费能源。


比特币和以太坊每年收集了40到50亿美金,他们把这些资金花在了挖矿的电力资源上,这些消耗的电力资源比一些小国家的都多;


在DPoS共识机制比特股,Steem和EOS的应用程序不需要用户为区块链上的操作支付费用。像传统的基于Web的应用程序一样,应用程序开发人员提供程序运行需要的资源,而不是由用户提供。


这些资源包括带宽、计算力、存储容量等。这意味着用户可以创建免费的区块链应用程序,新用户无需经历繁琐的加密数字货币购买流程,就可直接使用区块链上的应用程序。


可以免费使用的区块链平台自然可能会得到更多的关注。有了足够的用户规模,开发者和企业可以创建对应的盈利模式。


在DPoS中,那些原本要被浪费掉的四五十亿美元将会被代币持有人编入预算,代币持有人能以最有利于网络的方式来使用这笔资金。


4.共识周期长短对比


PoW机制最大的问题之一是的共识达成的周期较长,比特币每秒只能最多交易7笔交易,以太坊是每秒13笔左右,这样的交易量无法取代现有的商业应用。


相对于现实的以现有的应用程序,比如:交易所和Ebay,Uber,AirBnB和Facebook这些社交媒体为例;这些应用每天需要能够处理数千万日活跃用户提供服务,每秒平均需处理的事件高达数十万条。


基于石墨烯底层DPoS的已运行了三年的比特股和运行一年的Steem已实力证明可以达到1.5秒的平均确认速度和有限条件下实测3300笔的数据吞吐量;


而EOS将通过并行链的方式,最高将可以达到每秒数百万笔,并且并行本地链甚至将可以达到毫秒级的确认速度。


5.预防DOS攻击


事实是以太坊和比特币都遭受过DOS攻击,而Steem和Bitshares则运行良好。正如上图显示的那样,以太坊中7个节点的哈希算力就达到了整个网络的90%,把这7个节点拿掉,就能轻松摧毁以太坊。


总结:


通过以上几方面的对比,DPoS比PoW的优势明显,但这两种机制还存在最大的问题在于没有所谓的“最终确认”。


当获得一个区块确认时,只能代表交易有99%的可能性受到区块链的认可,当获得两个确认时,信心值会增高到99.9%的可能,当获得6个确认时,信心值可能会提升到99.9……9%,所有的确认都只是一个概率上的表达,而不是一个确定性的事情,理论上有可能存在其他攻击影响。


现在区块链上数字资产的应用越来越多来源于真实世界或金融资产,对交易的最终确认有很高的要求,需要有不同的共识机制。


共识机制是区块链的核心技术,现在各种区块链共识机制的选择是认为至今为止的相对的最优选择;当未来区块链技术越来越多应用于现实,未来将会不断有所改进,以切合实际的需要。


未来已来,只是尚未流行!

让我们跟随区块链的浪潮,共同穿越未来!!

作者:Ann729
链接:http://www.jianshu.com/p/ed5a3d766e5d
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  查看全部
BM和V神都是区块链界中星光熠熠的天才明星。


Vitalik Buterin,以太坊(Ethereum)项目的创始人,币圈人称“小神童”、“V神”、“维维”。如今,Vitalik已然成为了币圈及链圈内最耀眼的人物之一。


Daniel larimer,币圈人称BM(bytemaster),比特股(BitShares)、Steem以及EOS项目的创始人,BM是区块链界中极少数的连续创业者,比特股(BitShares)、Steem这两个项目已成功运行。


今年8月份时媒体写了BM和V神互怼的文,我仔细分析,在他们的互怼中的最核心都是在怼PoW和DPoS这两种共识机制在去中心化,治理能力,资源费用,预防DOS攻击,共识周期等这几方面的对比。


1.PoW和DPoS,谁更中心化?


PoW

4124900-9c5b076d6946f381.png


这是以太坊的区块生产节点分布图。你可以看到,两个矿池控制了51%的哈希算力,它们可以任意忽视其它所有矿池生产的区块,其中7个节点的哈希算力就达到了整个网络的90%。


而且,以太坊的完全节点也都是经过加强的,普通大众根本承受不起。所以,几乎所有的轻客户端根本不需要操心默克尔证明的问题,虽然Vitalik说默克尔证明多么的有价值。


在以太坊,他们单方面地制定决策,比如在DAO事件上;由于这个决策是由少数人制定的,没有大众参与,这就给予了内部人士不对等的交易机会。在这件事上,代码并非法律,操作者们才是。


PoW挖矿这种模式,比多数上市公司还中心化;硬件和电力现在都很便宜,这意味着矿池在投票权上是处于垄断地位的;现在比特币和以太坊都是这样。


当你把利益不同的人绑定到一起,不让代币持有人投票,由PoW导致的中心化,最终的结局就是寡头统治,而他们是不会对他们的行为负责任的。


如果你不允许代币持有人投票,这就表示你把受益者和决策制定者分开了。这样的话,制定出来的决策或许并不符合代币持有者的最大利益。比特币拓展的问题上看到过这一幕,数年来,矿工们控制了网络,收取高额费用。


投票的人并不是最后结果的直接受益者---这就是现在比特币和以太坊的组织方式。


DPoS


比特股、Steemit 以及EOS所使用的底层框架是石墨烯框架。石墨烯框架采用DPoS共识算法,平均出块速度1.5秒,出块节点(见证人)由持币用户选举投票产生,每个用户的投票权重则按照用户持币占系统总量比例计算。


全网持有代币的人可以通过投票系统来选择区块生产者,一旦当选任何人都可以参与区块的生产。


以EOS为例,预计每3秒生产一个区块。任何时刻,只有一个生产者被授权产生区块。如果在某个时间内没有成功出块,则跳过该块。


EOS架构中区块产生是以21个区块为一个周期。在每个出块周期开始时,21个区块生产者会被投票选出。前20名出块者首选自动选出,第21个出块者按所得投票数目对应概率选出。所选择的生产者会根据从块时间导出的伪随机数进行混合。以便保证出块者之间的连接尽量平衡。


事实是,对于矿工(节点提供者)来说,比特币和以太坊都比DPoS区块链更中心化。


2.治理能力对比


在PoW的共识机制下,矿工,Casper staker,矿池,股权池,基金会,完全节点,交易所都想占主导,而那些个人持币者却没有发言权。外部观察者根本无法知道这个特别委员会是否取得了共识。人们也就不确定共识的步骤是什么。


比如在ETC和BCC这些分叉,都是基金会和矿池组织双方的博弈,而我们这些个人持币者只是被通知的角色,是无参与决策权的。这样的治理算法则会导致特别委员会的治理模式,社区作出的决定会令个人持币者感到模糊不清的。


在DPoS模式下,治理的结构是清晰的,所有的股东都有发言权。这种治理的成本与共识过程是一致的,每个人都能知道治理的政策是什么,也知道他们该怎么参与。制定决策的时候,就很清楚,不会有二义性。不会有“意外分叉”,因为区块链很清楚新的硬分叉路径,旧的节点共识会通知他们“关停”,除非他们升级了。


在正常情况下,DPOS块链不会经历任何叉,因为块生产者合作生产区块而不是竞争。如果有区块分叉,共识将自动切换到最长的链条。具有更多生产者的区块链长度将比具有较少生产者的区块链增长速度更快。此外,没有块生产者应该同时在两个区块链分叉上生产块。如果一个块生产者发现这么做了,就可能被投票出局。


Bitshares成功运行了3年多,Steem也成功了1年多,性能达到每秒上千笔交易量,它们能降低交易费,还能进行19次无缝硬分叉,而这都归功于DPoS治理能力。


然而比特币和以太坊不久的将来还会面临分叉的问题。或许未来存在一种方法,能把矿工,股东,矿池,基金,完全节点,交易所和商标持有人聚到一起取得共识,然后强制他们遵守这个统一的治理架构。然而,现在还没有这种方案出现。


3.能源利用对比


PoW的核心要义为:算力越大,挖到块的概率越大,维护区块链安全的权重越大。相对其他共识机制而言,PoW逻辑简单,容易实现,容错达50%,其安全有严格的数学论证。但PoW最大的问题之一,被指责最多是浪费能源。


比特币和以太坊每年收集了40到50亿美金,他们把这些资金花在了挖矿的电力资源上,这些消耗的电力资源比一些小国家的都多;


在DPoS共识机制比特股,Steem和EOS的应用程序不需要用户为区块链上的操作支付费用。像传统的基于Web的应用程序一样,应用程序开发人员提供程序运行需要的资源,而不是由用户提供。


这些资源包括带宽、计算力、存储容量等。这意味着用户可以创建免费的区块链应用程序,新用户无需经历繁琐的加密数字货币购买流程,就可直接使用区块链上的应用程序。


可以免费使用的区块链平台自然可能会得到更多的关注。有了足够的用户规模,开发者和企业可以创建对应的盈利模式。


在DPoS中,那些原本要被浪费掉的四五十亿美元将会被代币持有人编入预算,代币持有人能以最有利于网络的方式来使用这笔资金。


4.共识周期长短对比


PoW机制最大的问题之一是的共识达成的周期较长,比特币每秒只能最多交易7笔交易,以太坊是每秒13笔左右,这样的交易量无法取代现有的商业应用。


相对于现实的以现有的应用程序,比如:交易所和Ebay,Uber,AirBnB和Facebook这些社交媒体为例;这些应用每天需要能够处理数千万日活跃用户提供服务,每秒平均需处理的事件高达数十万条。


基于石墨烯底层DPoS的已运行了三年的比特股和运行一年的Steem已实力证明可以达到1.5秒的平均确认速度和有限条件下实测3300笔的数据吞吐量;


而EOS将通过并行链的方式,最高将可以达到每秒数百万笔,并且并行本地链甚至将可以达到毫秒级的确认速度。


5.预防DOS攻击


事实是以太坊和比特币都遭受过DOS攻击,而Steem和Bitshares则运行良好。正如上图显示的那样,以太坊中7个节点的哈希算力就达到了整个网络的90%,把这7个节点拿掉,就能轻松摧毁以太坊。


总结:


通过以上几方面的对比,DPoS比PoW的优势明显,但这两种机制还存在最大的问题在于没有所谓的“最终确认”。


当获得一个区块确认时,只能代表交易有99%的可能性受到区块链的认可,当获得两个确认时,信心值会增高到99.9%的可能,当获得6个确认时,信心值可能会提升到99.9……9%,所有的确认都只是一个概率上的表达,而不是一个确定性的事情,理论上有可能存在其他攻击影响。


现在区块链上数字资产的应用越来越多来源于真实世界或金融资产,对交易的最终确认有很高的要求,需要有不同的共识机制。


共识机制是区块链的核心技术,现在各种区块链共识机制的选择是认为至今为止的相对的最优选择;当未来区块链技术越来越多应用于现实,未来将会不断有所改进,以切合实际的需要。


未来已来,只是尚未流行!

让我们跟随区块链的浪潮,共同穿越未来!!

作者:Ann729
链接:http://www.jianshu.com/p/ed5a3d766e5d
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

【翻译】EOS vs Ethereum - 泰坦之战(中文版)

EOS其他相关郑浩 发表了文章 • 0 个评论 • 405 次浏览 • 2017-10-17 13:16 • 来自相关话题

原文地址: eos-vs-ethereum-clash-of-the-titans
author: @mohit18jan
 
近日,Dan Larimer与eos.io团队宣布开发一个共识区块链操作系统-EOS ,为应用开发者提供数据库,账户权限,调度,账户认证以及应用间通讯等功能。

自EOS代币发售以来,经常有人对EOS与Ethereum之间进行比较。EOS和Ethereum都是去中心化的智能合约平台,允许用户开发去中心化的应用(dapps).

Ethereum是迄今为止规模最大也最成功的去中心化应用平台,但是也有其限制。Vitalik Buterin最近在 Reddit’s Ethereum 交易社区的一篇帖子之中承认“Ethereum可扩展性很操蛋;区块链的底层设计存在瓶颈,单个节点上,必须对整个网络之中的每一笔交易都要进行处理”。

不过,在EOS和Ethereum的设计和愿景上存在诸多差异,我们看一下其中的一些区别:






 
EOS

委托股权证明机制(DPOS)
损坏程序的修复机制(冻结和修复损坏或冻结的程序)
无多条区块链分叉的风险
用具有合法约束力的区块链宪法,建立共同的司法管辖.
为开发者提供全套的加密和区块链通讯功能,使得开发者能够专注于商业逻辑的功能开发.
通过横向和纵向的扩展,可以让EOS网络处理能力达到每秒处理上百万笔交易.
可以支持数千个工业规模的去中心化应用
对单个app的拒绝服务(DoS)攻击,不会让整个网络中断.
零交易费用,除了初始的EOS代币外,开发者无其它成本







 
Ethereum

工作量证明机制,计划向POS/POW混合机制迁移
失败和损坏的程序,会造成投资损失,或者区块链硬分叉(DAO程序的失败,导致了ETH和ETC的分叉)
修复一个损坏的程序,需要中断整个网络
前期测试网络的处理能力是25笔交易每秒,经过优化之后,可能达到每秒50或100笔交易.
Vitalik Buterin提出了无限扩容路线图,通过数据库切片的方式来实现,该扩容方式具有技术难度,正在进行开发。
暴涨的交易量通常会让整个网络冻结拥堵.
每一次计算,存储操作和带宽占用,都需要消耗Gas费.



EOS认为,不同的应用中,往往需要同样类型的功能.他们希望能够提供这些功能,如加密和app/区块链通讯工具,很多应用都会用到。EOS以区块链的形式提供了一套完整的工具包,使得开发者只需专注于应用的开发即可.举个例子,假如所有的手机制造商都需要自己创造一个如安卓或者IOS的操作系统,那么,手机制造商的数量将会剧烈减少.

原理和管理机制

以太坊网络当前对工作证明机制的实现存在一个问题,即修复损坏的程序是很困难的.DAO出现了致命的bug,被黑客攻击而项目破产,使得以太坊网络分裂为ETC和ETH.

如果再有这样的情况,某个存在缺陷的合约导致了数百万美元的损失,又该如何应对?Vitalik Buterin和其他以太坊社区的领导者,需要进行另外一次硬分叉么?再弄出一个Ethereum Class Two,或者其它的支链么?

另外,存在缺陷的智能合约,曾导致一家加拿大数字货币交易所QuadrigaCX,损失了超过价值一千万美元的以太币.因此,如果以太坊上面智能合约存在漏洞,要么会导致投资者损失,要么导致硬分叉,中断整个网络.

EOS可以冻结和修复有问题的应用。如果在你的应用之中存在缺陷-社区可以冻结该应用,部署修复代码,而不需要中断整个网络。简而言之,在EOS上硬分叉会被当做常规事务一样的处理。

可扩展性--规则颠覆者?

Dan在2017共识大会上所做的EOS展示,重点强调几个消费者服务的处理能力,能够达到数千笔交易每秒。对区块链应用的大规模应用而言,可扩展性是异常重要的。

在Ethereum上,早期的测试网络达到了25笔交易每秒(在一些优化的条件下), 经过优化,有可能达到50或100笔交易每秒. 对于金融机构和社交网络等大型的去中心化应用来说,这种处理速度远远不够。
Vitalik Buterin提出了一个“无限扩容”路线图,开发周期为两年,严重依赖数据库切片技术。

切片概念是指将数据库分割为更小的部分,叫做"shards",然后在分散的服务器上传播这些切片.

虽然由于存在复杂的技术限制,对该方案存在种种疑虑,不过,如果该方案成功,可以预期,Ethereum将会继续享受作为区块链智能合约平台的先发优势。

EOS会利用纵向与横向扩容技术,使得区块链的扩展能力,可能达到每秒处理数百万笔交易的级别。它依赖于一项叫做石墨烯(Graphene)的可靠技术, 在压力测试中,该技术能够实现每秒钟10,00-100,000笔交易的处理能力。通过纵向和横向扩展,实现每秒钟数百万笔交易的处理量,还是有可能的。

结论:

谁是胜利者?还未知晓!

我相信,两者都是很重要的技术,可以共存(像Windows和Mac那样)。然而,在从零开始构建商业级别的区块链应用时,EOS更有优势。这篇文章略微偏向EOS,毕竟,每篇文章都会不可避免的带有作者的看法和信念。

备注: 本人并不持有EOS或Ethereum代币,本文中的信息不可被视作投资建议

作者:shuke0327
链接:http://www.jianshu.com/p/10ea3a5f1b5e
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  查看全部
原文地址: eos-vs-ethereum-clash-of-the-titans
author: @mohit18jan
 
近日,Dan Larimer与eos.io团队宣布开发一个共识区块链操作系统-EOS ,为应用开发者提供数据库,账户权限,调度,账户认证以及应用间通讯等功能。

自EOS代币发售以来,经常有人对EOS与Ethereum之间进行比较。EOS和Ethereum都是去中心化的智能合约平台,允许用户开发去中心化的应用(dapps).

Ethereum是迄今为止规模最大也最成功的去中心化应用平台,但是也有其限制。Vitalik Buterin最近在 Reddit’s Ethereum 交易社区的一篇帖子之中承认“Ethereum可扩展性很操蛋;区块链的底层设计存在瓶颈,单个节点上,必须对整个网络之中的每一笔交易都要进行处理”。

不过,在EOS和Ethereum的设计和愿景上存在诸多差异,我们看一下其中的一些区别:


DQmcCXL82K7Fa8BXJBeLCYGJf1MyerTiyfeXwtkCe7wiTiw_1680x8400.png

 
EOS


委托股权证明机制(DPOS)
损坏程序的修复机制(冻结和修复损坏或冻结的程序)
无多条区块链分叉的风险
用具有合法约束力的区块链宪法,建立共同的司法管辖.
为开发者提供全套的加密和区块链通讯功能,使得开发者能够专注于商业逻辑的功能开发.
通过横向和纵向的扩展,可以让EOS网络处理能力达到每秒处理上百万笔交易.
可以支持数千个工业规模的去中心化应用
对单个app的拒绝服务(DoS)攻击,不会让整个网络中断.
零交易费用,除了初始的EOS代币外,开发者无其它成本




DQmUpKZ1aG2jX5qB8mfVCj3yopCtzhZxHgcgXWDhsNp9QJK_1680x8400.png

 
Ethereum


工作量证明机制,计划向POS/POW混合机制迁移
失败和损坏的程序,会造成投资损失,或者区块链硬分叉(DAO程序的失败,导致了ETH和ETC的分叉)
修复一个损坏的程序,需要中断整个网络
前期测试网络的处理能力是25笔交易每秒,经过优化之后,可能达到每秒50或100笔交易.
Vitalik Buterin提出了无限扩容路线图,通过数据库切片的方式来实现,该扩容方式具有技术难度,正在进行开发。
暴涨的交易量通常会让整个网络冻结拥堵.
每一次计算,存储操作和带宽占用,都需要消耗Gas费.




EOS认为,不同的应用中,往往需要同样类型的功能.他们希望能够提供这些功能,如加密和app/区块链通讯工具,很多应用都会用到。EOS以区块链的形式提供了一套完整的工具包,使得开发者只需专注于应用的开发即可.举个例子,假如所有的手机制造商都需要自己创造一个如安卓或者IOS的操作系统,那么,手机制造商的数量将会剧烈减少.

原理和管理机制

以太坊网络当前对工作证明机制的实现存在一个问题,即修复损坏的程序是很困难的.DAO出现了致命的bug,被黑客攻击而项目破产,使得以太坊网络分裂为ETC和ETH.

如果再有这样的情况,某个存在缺陷的合约导致了数百万美元的损失,又该如何应对?Vitalik Buterin和其他以太坊社区的领导者,需要进行另外一次硬分叉么?再弄出一个Ethereum Class Two,或者其它的支链么?

另外,存在缺陷的智能合约,曾导致一家加拿大数字货币交易所QuadrigaCX,损失了超过价值一千万美元的以太币.因此,如果以太坊上面智能合约存在漏洞,要么会导致投资者损失,要么导致硬分叉,中断整个网络.

EOS可以冻结和修复有问题的应用。如果在你的应用之中存在缺陷-社区可以冻结该应用,部署修复代码,而不需要中断整个网络。简而言之,在EOS上硬分叉会被当做常规事务一样的处理。

可扩展性--规则颠覆者?

Dan在2017共识大会上所做的EOS展示,重点强调几个消费者服务的处理能力,能够达到数千笔交易每秒。对区块链应用的大规模应用而言,可扩展性是异常重要的。

在Ethereum上,早期的测试网络达到了25笔交易每秒(在一些优化的条件下), 经过优化,有可能达到50或100笔交易每秒. 对于金融机构和社交网络等大型的去中心化应用来说,这种处理速度远远不够。
Vitalik Buterin提出了一个“无限扩容”路线图,开发周期为两年,严重依赖数据库切片技术。

切片概念是指将数据库分割为更小的部分,叫做"shards",然后在分散的服务器上传播这些切片.

虽然由于存在复杂的技术限制,对该方案存在种种疑虑,不过,如果该方案成功,可以预期,Ethereum将会继续享受作为区块链智能合约平台的先发优势。

EOS会利用纵向与横向扩容技术,使得区块链的扩展能力,可能达到每秒处理数百万笔交易的级别。它依赖于一项叫做石墨烯(Graphene)的可靠技术, 在压力测试中,该技术能够实现每秒钟10,00-100,000笔交易的处理能力。通过纵向和横向扩展,实现每秒钟数百万笔交易的处理量,还是有可能的。

结论:

谁是胜利者?还未知晓!

我相信,两者都是很重要的技术,可以共存(像Windows和Mac那样)。然而,在从零开始构建商业级别的区块链应用时,EOS更有优势。这篇文章略微偏向EOS,毕竟,每篇文章都会不可避免的带有作者的看法和信念。

备注: 本人并不持有EOS或Ethereum代币,本文中的信息不可被视作投资建议

作者:shuke0327
链接:http://www.jianshu.com/p/10ea3a5f1b5e
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

BM采访实录:EOS去中心化的操作系统

EOS其他相关郑浩 发表了文章 • 0 个评论 • 352 次浏览 • 2017-10-17 12:40 • 来自相关话题

视频来源:https://www.youtube.com/watch?v=eftctVXiFJQ

译者:汪涛,原载于其公众号 反求诸己  ,这篇是2017年8月23号,Dan 接受采访的翻译。





 

Q: 我们对你如何进入这个区块链世界非常感兴趣,你怎么接触到区块链和比特币的


A: 很久之前,我开始在对我自己的生活每方面都提问,希望得到生活的真相。我掉进了自由市场(free markets)和奥地利经济学(Austrian economics)的兔子洞。我意识到,我想创建这样的一个系统,通过非暴力的方式给予我们自由。然后我就给我的人生设置了一个目标,为自由市场提供解决方案,从而保证生命和财产的自由。

为了保证生命和财产的自由,我们需要一些不能被打印被控制的钱。所以我想找到一些金和银的替代品,因为,他们不是很容易的运输与携带。大概是2009年,我正好发现了bitcoin,那时的btc,还可以在普通的电脑上挖出一个完整的区块。所以我在这个行业里非常的久了。

在2013年,在门头沟的美国账户,被美国政府给控制了的时候。我意识到所有的这些交易所,都是很容易受到攻击的。很有可能政府会关闭交易所,可能会切断交易所的现金流,这是为什么我站出来要创建 bts,一个去中心化的交易所,主要功能是锚定资产可以跟随,金,银,美元,人民币。然后可以用这些锚定资产再去交易数字资产。

当我在建设这样的一个去中心化的交易所的时候,我意识到区块链科技不能满足需求,比特币10分钟出一个块对于交易来说是不能接受的。2013-2015,我创建了bts1和bts2.0,bts 是第一个区块链可以做到每秒万次交易的区块链,我在过去的几年,都是在把区块链的性能推向现实世界实际的性能要求。bts也是第一个拥有账户系统,和内在治理系统的区块链。人们实际上被区块链所雇佣。实际上是把浪费在挖矿上的价值用于价值再生产,然后把产生的价值在返还给token。

这是我对bts所做的事情,bts到现在还是有没有大规模使用的问题,还是很难说服很多人在一条区块链上去完成交易。还有交易手续费,你有一个去中心化的交易所,当你创建买单或者取消买单的时候都会向你收费,这些都是bts普及的障碍。

当我们在区块链萧条的时候,我们也用光了bts筹集来的开发资金。之后我想出了一个主意,做一个区块链上的社交网络,我们会奖赏那些生产内容的用户,然后这些内容会自然的吸引流量,比如从google。这样吸引新的用户不会有任何的花费。这可能是第一条区块链,让你可以通过贡献你的工作,你的内容来让token增值,而不需要贡献任何的金钱。

steemit 是一个区块奖励系统的试验。比特币只有少数矿工才能够拿到奖励,十万人可以每天得到区块链的奖励,这意味着,分配奖励的工作需要去中心化。在bts中,必须所有的投票者都同意,用户才能得到奖励,这个过程是非常困难的,非常政治的。我们把分配奖励的决定权,降权到一个非常低的级别。让每个人都可以通过点赞这个操作,来让区块链释放一部分的奖赏。到目前为止 ,steemit非常成功,在一年之内 已经是全球的前2000家的网站。这个帮助许多人接触到了区块链科技,也在区块链的架构方面帮助了我很多。

在完成了bts,和steemit 之后,我意识到,这两个应用有许多东西是一致的,其他大量的应用,可以通过继承相同的账户系统,账户恢复,高性能,steem 和 bts 都是业界的顶尖性能。这两个区块链加起来的区块量,超过整个市场半数以上。在 steem 我们让大部分的操作免费起来,因为用户不会想因为点赞付费,他们只会为发表或评论这样的动作付费。现在我的工作转移到了eos,eos是相当于把所有的事情放到了一起。提供每个人都可以使用的一个编程环境。


 

Q:这是非常影响深刻的一个简介 ,每个人都会被你过去做的大量工作所震惊,但是我们好奇的是是什么你从bitshare,迁移到 steemit,再迁移到eos。


A:我学到的最大教训是,当我学习到了一些新的东西,我想要继续把东西往前推的时候,社区的人更喜欢保持事情还是原来那样。就像btc  分叉了 btc, eth 分叉了 etc,如果你想要做大的改动,或者是一些牵扯到架构的改动,就像steemit 对分发奖励做了一些有风险的改进,或者通胀,我想要给bitshare加上一些有限的通胀,来为之后的开发募集资金。社区的人可能更喜欢原来把他们吸引到现在的一种方式,很难去改变一些什么。我开始新项目的原因是,当你学到了一些足够的东西,但是你又没有能力带着整个社区前进。当你创建了一个新的区块链,组建一个新的社区,那些认同你观念人们可以卖掉他们旧的token买入新的token。这里有个平衡,每个人都得到他们想要的,这就是自由市场在一些很困难的情况下如何达成一致性。在这些情况下,没人知道新的想法是否一定会比老的好。有些情况下你必须要扔掉旧的一些东西,但是不是每个人都想让那些旧的东西走开。


 

Q: 现在怎么看bts,人们还是使用它交易


A:bts现在交易还在大量的增长,在我没有参与的情况下,除了一些紧急的bug处理以为。bts在靠自己的力量成长,当我离开bts之后,bts确实价格涨了不少,对于steem 也是一样的,我离开之后steem 涨了不少。所以这是一个好事情,像中本聪离开比特币,比特币也开始涨了不少。对于去中心化的系统来说,不在依赖创始人,这是一个衡量标准。bts还没有达到空间,技术上我认为,bts是一个比eth更好的分发token的平台,只是人们不太清楚这点,并且交易所没有很好的集成进去这一点。从技术上讲,bitshare可以承载比eth多两到三倍的交易量。


 

Q: bts 现在每天的应对的交易量是eth的三倍?


A:是的,每天


 

Q: 现在每周都会有新的ico,你怎么看,哪些条件可以决定项目有可能成功,有可能有长期价值。


A:他们都在犯同样的错,给那些不需要token的东西添加token,他们给那些不能从去中心化获益的东西,添加去中心化。在这个领域内最大的挑战是,很多理论密码学家而没有软件架构的经验与原则。这个市场里的大部分人,听起来都在做一样的事情, 在好项目和坏项目之间的细节,很难从表面去分辨。


 

Q: 现在你在做eos, 如果你接下来去做其他的事情怎么办


A:我对blockone 做了一个长期承诺,过去的项目迁移,bts实际上是用光了开发资金,这种情况在eos不会发生。我之后的项目也会在eos上构建,eos被设计为一个可扩展的,高性能的编程平台。建立一个社区是很困难的事情,重新建立一条链并不是我特别想做的一件事情。我只会在有不能解决的问题的时候这样做。Eos 包含了我过去的项目的很多经验,我们现在有这么好的团队和我一起工作。我下个项目将会在EOS上开发,而不是取代eos。我想要使用我自己创造的东西,只要eos可以通过内置的宪法进化。 Eos 的目标是成为通用的构建app的平台,而不是像steemit,只是很窄的专注于社交网络。我没有预见任何需求,我需要从eos平台上移开。因为EOS 可以让我做任何我需要做的事。


  

Q: EOS有点像区块链的SDK,如何比较EOS和ETH


A: steemit 不可能建立在eth之上,eth很慢,而且用户必须购买token才能够使用平台。这些事情,让steemit 不能在eth上实现。实现一个bts类似的交易所是可能的,但是相比于中心化的交易所,受限于fee和性能。我们想创建eos的一个原因就是,eth不能够支持我们创建我们想创建的应用。我对eos的测试case就是,我能不能创建bts或者steemit。微处理器没有任何操作系统在其之上,技术上说你可以做任何事情,但是你需要自己去直接操作硬件,你没有数据库,你没有账户系统 ,你没有任何你习以为常的操作系统类的东西。EOS是一个操作系统,是因为它处理了额外的复杂性,他帮你管理磁盘,给了你一个带更高抽象的索引的数据库,帮你管理账户系统,给你了权限管理,帮你计划多线程调度,给了你可扩展性。

 


Q: 怎么防止别人做一个和eos类似的东西出来,有这些所有的功能但是基于eth。


A:因为eth需要他们的收费模型,需要改变他们的一致性模型,需要提高吞吐量,所以,eth如果要完全提供eos的功能,有很多的工作需要做。eth现在只做了提高并发执行速度的计划,并没有做提高线性执行的计划,即使是在最新的plasma中。

 


Q: 是不是也会有一个图灵完备的脚本语言


A: 我们会使用,webAssmbly,这个是浏览器之后的工业标准,被微软,google,apple 支持。webAssmbly 被设计的时候,就是要提供一个可信的高性能的运行环境运行在浏览器上,我们把它应用在了区块链上。这本来就是一个沙箱,我们添加了一些限制,比如最多应用可以在这个上面跑多长时间,来限制人们在上面创建无限的循环,eth不能用无限循环,因为当最终gas被用完后,循环将被停止,同样的逻辑我们也应用在eos上。你可在eos上编程,当与合约交互的时候,你可以选择同步交互或者异步交互。合约本身可以并行执行。你可以只跑那些你需要的合约,你可以只跑那些与你的生意有关的合约,steemit是跑在eos上的,那么你就不需要跑bts的合约,因为这些合约和社交平台的网络无关。这样更加的真实。


 

Q:没有fee的情况下怎么能够处理无限循环


A :区块生产者决定打包你的交易,是因为它运行了你的交易并且交易完成了。如果你扩散交易,所有的完整生产者都会尝试执行它,并打包,如果你太慢了,在打包之前就会被丢弃。如果一个节点,错误的打包了一个需要一秒钟去执行的交易,这个节点就会被投票出去失去生产权。


 

Q:  如果需要检查执行时间,会不会形成性能瓶颈


A:关于性能是两点,第一点是虚拟机的速度,基于 webAssmbly 和 jit,我们可以每秒执行5万笔转账,大概是eth的10倍速度, 第二点是可水平拆分性, 这是eos的闪光点,交易留可以同时被多个电脑,多个cpu所执行。





 

Q: 当部分运行的是一个子集的网络,你怎么去保证这个运行时不会处理错误的信息


A: EOS 的全节点可以运行和确认所有的东西,每个人都可以通过全节点的网络来确保每件事情都是经过验证的。另外每笔交易都会在一个 merkle tree 上,所以你可以证明导入的已完成的交易是在链上的。你从银行拿到的支票,都会有一些特征,你可能不知道支票的金额,但是知道确实有人给你支付了一笔。这里有一个概念上的冲突,即基于状态的区块链vs基于消息的区块链。EOS是基于消息达到一致的区块链,所有的在链上的消息都被视为是有效的,并且是被执行过的。基于状态的方式,只有在交易正在被执行的时候可以被衡量。对于一个eth合约来说, 你很难证明现在的运行状态,除非它正在运行,所以,就像时间一样,你可以证明它过去的状态,但是你不能判定它现在执行的状态。基于状态,让整个区块链更僵硬,也更难去优化。ETH 在做sharding 的过程中,可以需要使用到消息的。EOS客户端可以去验证所有交易,而且并不需要去跑所有的东西,如果你需要去查询状态,你可以查询多个多个节点,把所有的信息组合起来。

EOS还有其它的王牌,在eos的链上,在签名每笔交易的时候,也签名了EOS宪法。EOS宪法是一份所有用户达成的共识,如果你用一个服务去查询状态,eos会返回一个描述当时状态的签名的声明,如果之后可以证明,用户关于这个声明撒谎了,你可以要求用户为他们撒谎的行为负责。这里有一个,关于,性能,安全,可用性的平衡。我们和ETH最大的不同是,我们的目标是商业服务,更大的应用,就像fackbook,交易所,社交媒体,预测市场。所有这些都需要服务于百万用户,所有的这些服务,都不会在你的家用电脑上运行,通过你的家用网络和互联网连接。大部分这些服务都是完全合法的,不会有政府强行关闭的可能性。所以这些部分是可以运行在有着高带宽的机房的。通过这样去获得的,去中心化,可扩展性对于我们把区块链推向主流市场是非常的重要的。


 

Q: EOS 不像eth有花费模型,你能解释一下么


A: 我们最基础的模型是从steemit拷贝过来的,用户手里有很小一笔资产,大概只有几刀,但这不会妨碍用户进行大部分的交互,你甚至不需有资产,只要有代理的资产。比如你可以对一个用户说,我可以把属于我的网络带宽给你如果你使用这些带宽,其他人可以免费使用这些带宽。

Facebook 为自己的服务器支付费用, 而不是你去支付。商业服务者需要从其他地方获取收益,而不是通过每打开一个页面都要求一些收益。ETH的fee模型,是不可控制的,你总是会把你的eth用光。但是,在eos上你可以始终用一个慢速交易。对于开发者来说,租赁和拥有在应用之后的硬件是有区别的。我们也始终在为spam做准备,限流算法意味着,当你进行ico的时候,不会有能阻断普通用户的限流攻击出现。


 

Q:EOS 可以卖出流量使用权么,有些时刻我需要应对大量的流量,有些时候我并不需要


A:这有点像你的网络服务商,他们会给你一个基本带宽,但是你可以升级到更高的容量,如果其他人并没有在使用。如果你有1%的EOS,只有当网络100%使用的时候,你才会被限流到只有1%的带宽,对于大多数人来说,只有当网络被充满的时候,才会限流。


 

Q:如何比较 DPOS 和 Casper


A: 一致性算法有这样几个方面,谁应该打包区块,什么时间应该打包区块,怎么能确定区块本身是不可逆的。pow假设我们有很多忠诚的算力在竞争,第一个发现问题答案的生产者,会拥有打包的时间和决定权,在经过如此多的确认之后,这个变成了不可逆的了。在EOS里,你有股票,也有投票权,去选择哪些人去生产区块, 这些区块生产者,就像eth的矿池一样。我习惯这样去想,比特币和eth实际上是代理模式的pow,那些生产区块的人,和那些指派矿池的人不是同一批人。在EOS里,我们通过投票确认谁去生产,接下来的问题就是什么时间去生产接下来的区块。我们的dpos算法可以让所有的参与的算力者,轮流去生产区块。这样就意味着我们不会有孤儿区块。理论上来说,矿池也可以做到这一样的事情,只是他们的一致性算法不允许他们这样出块。这和casper 比怎么样。Casper 没有真正解决谁应该打包和什么时间出块的问题。Casper 创造每100个区块创造了一个检查点,超过这个检查点,意味着之前的区块都是可信的。Casper在对短期的区块的安全性上做的并不够。每个基于投票的区块链最终归于一个问题,谁在做投票。美联储实际上会为美元升值降值投票,拥有美元的人们在这个问题上没有话语权。就像矿工投票,不要从pow上移开,因为这牵扯到了他们的利益。所有的这些都是错位的激励,dpos工作就像一家公司,选择董事会,让董事会生产区块。这个激励是符合逻辑的。


 

Q:Casper 实际可以认为是所有人来做proof


A:这里有两个角色,区块生产者不意味着区块会被接受,生产区块只是一个提议,这里有一个区块,区块生产者没有权利去生产一个无效的区块,区块生产者没有权利去改变社区的已达成的一致性。你想想一下,现实世界中的一致性,我们只是使用软件,来提高我们达成一致性的速度。dpos 继承了现实世界中的检查者和生产者,他们是两个角色,而不是一个角色。在Casper里用户可能会生产没有交易的空块,这种在steemit和bts上是不会有的,因为,人们不被允许运行非标准的软件。Casper 这种通过奖赏达成一致性,在博弈论上看是非常完美的,但是当真正使用的时候,就需要考虑人性。


 

Q:DPOS 如何做自治的管理,我认为有两层,一层是协议层面的治理,比如进化和改变一致性算法,一层是应用层面的治理,比如应用有bug,我们需要回滚,你可以帮我们探讨下这两层的自治么


A: 第一层实际上是软件层面的宪法,是有所有的节点上跑的软件决定的。持票者选择区块生产者,决定什么时间去硬分叉。EOS是不会有硬分叉的,当整个网络决定是升级的时候,那些节点不知道怎么去做升级的会被自动关闭。而区块的生产者,也会等到升级后再生产区块,所以即使在你升级的时候,你也不会错失任何一个区块。steem 过去每个月都会有一个大的升级,过去大概进行了18次升级,没有一次会有硬分叉。EOS的一条哲学是,事物需要改变,最适者生存,而不是最强者生存。这也是自由市场的原则,长期来看,如果你不改变,那你就会被淘汰。所以eos被设计为一条可以持续不停进化的链。 这就是第一层的治理。

对于第二层治理,比如开发者开发了一个DAO,那里有一个bug,所有的资金都被偷走了,发行者拥有在没有硬分叉的前提下,升级合约的权利。区块生产者,有审查区块的权利。完美的代码是不可能的,Bug始终会发生,这是EOS认识到的,而其他的平台可能没有意识到的一个问题。即使代码被安全运行了多年,里面还是可能有隐藏的bug。之前一段时间,bts就有这样的一个隐藏bug,非常微妙的情况下,会把所有的生产者给冻结。我们都依赖的SSL,所有的电脑都在用,实际上也是有不安全的问题。代码不是完美的,我们需要有恢复的手段,我们围绕这点做设计。这种方式允许开发者,自己去建立自己的治理层,他们可以创建投票为是否可以更新代码。在其他的一些区块链上,身份和财产是分离的,拥有私钥这个身份,即使你通过hack电脑获得了私钥,并不意味着,你就真的是这个财产的所有人。身份和财产权,是系统想要去保护的,期望完整符合法律,而不是9/10的复合法律。





 

Q: 我们想讨论一下,EOS为期一年的token分发是怎么设计的,这样设计为了什么


A: 我想达到这样几件事,社区驱动的大范围的token分发,对于大部分人参与的公平的机会,这是我们的高级目标。我们构建这样一个ico去模拟挖矿,挖矿是你花费一部分电费来换取生产区块的可能性,但是当你开始挖矿的时候,你不知道有多少人同时也在准备开始挖矿,所以你无法预测当时拿到区块的成本,你只能自己给有一个大概的估计,难度是多少,我的成本可能是多少。我们据此构建了一个长达一年窗口的ico,而不是让人们在10分钟的窗口梭哈大量的金钱。这个ICO让人们在一段时间内忙碌,我们希望有一个更长的时间去开发EOS。EOS将会有一个测试网络,并且到今天为止,大部分的功能都完成了。我们意识到开发一个区块链软件,直到真实上线,是一个戏剧性的漫长过程。你需要仔细测试,通知交易所接入,在区块链的开发后期,开发进展速度会大幅度下降。我们希望有额外的六个月时间,在我们开发完一个最小化可运行的区块链之后,在这段时间里,我们可以快速的增强软件,其它开发者也可以在这段时间内开始开发他们的应用,这里遵循了一个哲学,严肃的软件,需要三到六个月去开发(到稳定)。所以当区块链启动的时候,人们也可以有能力去启动他们的应用。这是为什么我们要做一个一年的代币分发。


 

Q:用户还注意到,你们一开始有一个窗口


A:20%token 前7天,之后每天会有两百万的eos等待认购。所以每天的EOS的一级市场的价格,取决于在这个区间内人们认购的ETH的数量。所以没有人知道最终价格会是多少,即使那些在最后去投的人们。

我们大概产生了3亿美元的收入,这个收入并不是投资,我们利用这笔钱来构建产品。分发代币的目的在于,把token分发的越广泛越好,我们把原来100%在我们手里的token给分发给市场,这是我们在做的事情,


 

Q:这里有一个问题,你说这些收入不是投资


A: 我们是在开曼群岛的公司,所有的我们开发软件的资金,都来自于之前的代币分发。我们只会生产软件,我们甚至不会自己启动网络,对于纽约交易说来说,创建纽约交易的软件和真正运营纽约交易所,是有区别的。我们创建软件,并把软件给分发出去,EOS软件可能并没有价值,除非社区的人民决定使用我们的软件去启动一条链,这条链会根据erc20 去分发真正的token。


 

Q: 如何你们打算盈利,打算怎么盈利


A:我们对我们在block.one 所做的事情会有一个更详细的计划。我们会构建软件,和构建基础架构来构建我们的区块链生意。我们会继续构建EOS,但是EOS的回报可能要等到有人真正启动这条链之后。


 

Q: 我们的意思是,你们赚了很多钱


A: 我们的公司是由发现自由市场的解决方案的责任感所驱动。我们想创造改变世界的技术,就像APPLE也获取了他的收益,他们把收益投入到构建下一代伟大的东西中。他们从Mac中获得利润,用这些利润构建了iPod,从iPod获得利润,用这些收益构建了iPhone。我们有很多可以对世界产生积极影响的事情可以做。


 

Q: 其它的领域内会有这种专款专用的基金,从而来限制钱的使用。


A: 我不是律师,但是我们看到了SEC对DAO的态度,我们希望确保EOS的token分发复合所有的法律。所以条款是,这个token分发不代表任何对block.one 的期待,block.one 也不会去做任何的事情。我们唯一会做的事情,就是开发开源软件。


 

Q:为什么你们会发 Erc20 的token


A:没有经过分发的代币会遇到问题,如果你想要一条区块链,那么你就要经过初次代币分发。按我们的计划,代币分发和网络软件准备会同时完成,如果我们先构建软件,那么我们在之前还是要解决代币分发的问题,这个时间是不可省的。


 

Q: 你怎么可以保证,这些钱会被用于你许诺的事情


A: 我不能做任何保证,任何形式的都不能,任何形式的许诺都会被归结到财产类。我们没有许诺这件事实际上是EOS不被归结为财产的决定性因素。


 

Q: Civic 教育是以购买软件的形式,你们不考虑换用捐赠外的其它方式?


A:这个分发相当于分饼,每个拿到饼的人,可以拿到我们免费且开源的软件,来启动链。这个协议实际上是由市场里所有用钱参与了代币分发的人决定的,他们的所做所为和blockone 没有任何关系。但是如果你要问我的人生目标,包括block.one的目标,我们的目标不是钱,我们的目标是改变世界,给我的孩子们创建一个非组织非暴力的自由的世界。steem 给我最大的激励是,有些在非洲的穷人,现在过上了中产的生活,因为我开发的软件。这是让我每天早上起床的动力,当你有了一些钱之后,有更多的钱,不是什么重要的事情。我会继续尽我最大的努力,去找到一个自由市场的解决方案。


 

Q: 讨论一个 roadmap


A: 每个人都可以在github上看到进度,如果你是一个开发人员,你可以很简单的确认进度,我们现在,就是有了一个p2p的网络,有了合约的功能,我们接下来一段会完善开发文档,创建一些其它的工具,在今年年底,我们希望可以有一个其它开发者可以使用的软件。接下来是5个月的测试,压力测试,和一些微调。当eos发布的时候,人们需要去竞赛,如何熟悉软件,如何成为初始的区块生产者,从那点开始,每秒两万五到五万交易会是我们的单线程应用的目标,这个单线程实现,可以升级到多线程实现而不需要违反一致性,现在主要是,安全第一,性能第二。我们设计eos就是为了并行,可水平拓展设计的。现在是为了多线程设计,但是实现用了单线程,仅仅是现在的容量,实际上已经很大了。我们后续会继续升级,这是我们的长期计划。


 

Q:你们希望如何联系你们


A:在steem上follow我和block.one,订阅我们的邮件组。 查看全部
视频来源:https://www.youtube.com/watch?v=eftctVXiFJQ

译者:汪涛,原载于其公众号 反求诸己  ,这篇是2017年8月23号,Dan 接受采访的翻译。

59e4603824187_200_146.jpg

 


Q: 我们对你如何进入这个区块链世界非常感兴趣,你怎么接触到区块链和比特币的



A: 很久之前,我开始在对我自己的生活每方面都提问,希望得到生活的真相。我掉进了自由市场(free markets)和奥地利经济学(Austrian economics)的兔子洞。我意识到,我想创建这样的一个系统,通过非暴力的方式给予我们自由。然后我就给我的人生设置了一个目标,为自由市场提供解决方案,从而保证生命和财产的自由。

为了保证生命和财产的自由,我们需要一些不能被打印被控制的钱。所以我想找到一些金和银的替代品,因为,他们不是很容易的运输与携带。大概是2009年,我正好发现了bitcoin,那时的btc,还可以在普通的电脑上挖出一个完整的区块。所以我在这个行业里非常的久了。

在2013年,在门头沟的美国账户,被美国政府给控制了的时候。我意识到所有的这些交易所,都是很容易受到攻击的。很有可能政府会关闭交易所,可能会切断交易所的现金流,这是为什么我站出来要创建 bts,一个去中心化的交易所,主要功能是锚定资产可以跟随,金,银,美元,人民币。然后可以用这些锚定资产再去交易数字资产。

当我在建设这样的一个去中心化的交易所的时候,我意识到区块链科技不能满足需求,比特币10分钟出一个块对于交易来说是不能接受的。2013-2015,我创建了bts1和bts2.0,bts 是第一个区块链可以做到每秒万次交易的区块链,我在过去的几年,都是在把区块链的性能推向现实世界实际的性能要求。bts也是第一个拥有账户系统,和内在治理系统的区块链。人们实际上被区块链所雇佣。实际上是把浪费在挖矿上的价值用于价值再生产,然后把产生的价值在返还给token。

这是我对bts所做的事情,bts到现在还是有没有大规模使用的问题,还是很难说服很多人在一条区块链上去完成交易。还有交易手续费,你有一个去中心化的交易所,当你创建买单或者取消买单的时候都会向你收费,这些都是bts普及的障碍。

当我们在区块链萧条的时候,我们也用光了bts筹集来的开发资金。之后我想出了一个主意,做一个区块链上的社交网络,我们会奖赏那些生产内容的用户,然后这些内容会自然的吸引流量,比如从google。这样吸引新的用户不会有任何的花费。这可能是第一条区块链,让你可以通过贡献你的工作,你的内容来让token增值,而不需要贡献任何的金钱。

steemit 是一个区块奖励系统的试验。比特币只有少数矿工才能够拿到奖励,十万人可以每天得到区块链的奖励,这意味着,分配奖励的工作需要去中心化。在bts中,必须所有的投票者都同意,用户才能得到奖励,这个过程是非常困难的,非常政治的。我们把分配奖励的决定权,降权到一个非常低的级别。让每个人都可以通过点赞这个操作,来让区块链释放一部分的奖赏。到目前为止 ,steemit非常成功,在一年之内 已经是全球的前2000家的网站。这个帮助许多人接触到了区块链科技,也在区块链的架构方面帮助了我很多。

在完成了bts,和steemit 之后,我意识到,这两个应用有许多东西是一致的,其他大量的应用,可以通过继承相同的账户系统,账户恢复,高性能,steem 和 bts 都是业界的顶尖性能。这两个区块链加起来的区块量,超过整个市场半数以上。在 steem 我们让大部分的操作免费起来,因为用户不会想因为点赞付费,他们只会为发表或评论这样的动作付费。现在我的工作转移到了eos,eos是相当于把所有的事情放到了一起。提供每个人都可以使用的一个编程环境。


 


Q:这是非常影响深刻的一个简介 ,每个人都会被你过去做的大量工作所震惊,但是我们好奇的是是什么你从bitshare,迁移到 steemit,再迁移到eos。



A:我学到的最大教训是,当我学习到了一些新的东西,我想要继续把东西往前推的时候,社区的人更喜欢保持事情还是原来那样。就像btc  分叉了 btc, eth 分叉了 etc,如果你想要做大的改动,或者是一些牵扯到架构的改动,就像steemit 对分发奖励做了一些有风险的改进,或者通胀,我想要给bitshare加上一些有限的通胀,来为之后的开发募集资金。社区的人可能更喜欢原来把他们吸引到现在的一种方式,很难去改变一些什么。我开始新项目的原因是,当你学到了一些足够的东西,但是你又没有能力带着整个社区前进。当你创建了一个新的区块链,组建一个新的社区,那些认同你观念人们可以卖掉他们旧的token买入新的token。这里有个平衡,每个人都得到他们想要的,这就是自由市场在一些很困难的情况下如何达成一致性。在这些情况下,没人知道新的想法是否一定会比老的好。有些情况下你必须要扔掉旧的一些东西,但是不是每个人都想让那些旧的东西走开。


 


Q: 现在怎么看bts,人们还是使用它交易



A:bts现在交易还在大量的增长,在我没有参与的情况下,除了一些紧急的bug处理以为。bts在靠自己的力量成长,当我离开bts之后,bts确实价格涨了不少,对于steem 也是一样的,我离开之后steem 涨了不少。所以这是一个好事情,像中本聪离开比特币,比特币也开始涨了不少。对于去中心化的系统来说,不在依赖创始人,这是一个衡量标准。bts还没有达到空间,技术上我认为,bts是一个比eth更好的分发token的平台,只是人们不太清楚这点,并且交易所没有很好的集成进去这一点。从技术上讲,bitshare可以承载比eth多两到三倍的交易量。


 


Q: bts 现在每天的应对的交易量是eth的三倍?



A:是的,每天


 


Q: 现在每周都会有新的ico,你怎么看,哪些条件可以决定项目有可能成功,有可能有长期价值。



A:他们都在犯同样的错,给那些不需要token的东西添加token,他们给那些不能从去中心化获益的东西,添加去中心化。在这个领域内最大的挑战是,很多理论密码学家而没有软件架构的经验与原则。这个市场里的大部分人,听起来都在做一样的事情, 在好项目和坏项目之间的细节,很难从表面去分辨。


 


Q: 现在你在做eos, 如果你接下来去做其他的事情怎么办



A:我对blockone 做了一个长期承诺,过去的项目迁移,bts实际上是用光了开发资金,这种情况在eos不会发生。我之后的项目也会在eos上构建,eos被设计为一个可扩展的,高性能的编程平台。建立一个社区是很困难的事情,重新建立一条链并不是我特别想做的一件事情。我只会在有不能解决的问题的时候这样做。Eos 包含了我过去的项目的很多经验,我们现在有这么好的团队和我一起工作。我下个项目将会在EOS上开发,而不是取代eos。我想要使用我自己创造的东西,只要eos可以通过内置的宪法进化。 Eos 的目标是成为通用的构建app的平台,而不是像steemit,只是很窄的专注于社交网络。我没有预见任何需求,我需要从eos平台上移开。因为EOS 可以让我做任何我需要做的事。


  


Q: EOS有点像区块链的SDK,如何比较EOS和ETH



A: steemit 不可能建立在eth之上,eth很慢,而且用户必须购买token才能够使用平台。这些事情,让steemit 不能在eth上实现。实现一个bts类似的交易所是可能的,但是相比于中心化的交易所,受限于fee和性能。我们想创建eos的一个原因就是,eth不能够支持我们创建我们想创建的应用。我对eos的测试case就是,我能不能创建bts或者steemit。微处理器没有任何操作系统在其之上,技术上说你可以做任何事情,但是你需要自己去直接操作硬件,你没有数据库,你没有账户系统 ,你没有任何你习以为常的操作系统类的东西。EOS是一个操作系统,是因为它处理了额外的复杂性,他帮你管理磁盘,给了你一个带更高抽象的索引的数据库,帮你管理账户系统,给你了权限管理,帮你计划多线程调度,给了你可扩展性。

 



Q: 怎么防止别人做一个和eos类似的东西出来,有这些所有的功能但是基于eth。



A:因为eth需要他们的收费模型,需要改变他们的一致性模型,需要提高吞吐量,所以,eth如果要完全提供eos的功能,有很多的工作需要做。eth现在只做了提高并发执行速度的计划,并没有做提高线性执行的计划,即使是在最新的plasma中。

 



Q: 是不是也会有一个图灵完备的脚本语言



A: 我们会使用,webAssmbly,这个是浏览器之后的工业标准,被微软,google,apple 支持。webAssmbly 被设计的时候,就是要提供一个可信的高性能的运行环境运行在浏览器上,我们把它应用在了区块链上。这本来就是一个沙箱,我们添加了一些限制,比如最多应用可以在这个上面跑多长时间,来限制人们在上面创建无限的循环,eth不能用无限循环,因为当最终gas被用完后,循环将被停止,同样的逻辑我们也应用在eos上。你可在eos上编程,当与合约交互的时候,你可以选择同步交互或者异步交互。合约本身可以并行执行。你可以只跑那些你需要的合约,你可以只跑那些与你的生意有关的合约,steemit是跑在eos上的,那么你就不需要跑bts的合约,因为这些合约和社交平台的网络无关。这样更加的真实。


 


Q:没有fee的情况下怎么能够处理无限循环



A :区块生产者决定打包你的交易,是因为它运行了你的交易并且交易完成了。如果你扩散交易,所有的完整生产者都会尝试执行它,并打包,如果你太慢了,在打包之前就会被丢弃。如果一个节点,错误的打包了一个需要一秒钟去执行的交易,这个节点就会被投票出去失去生产权。


 


Q:  如果需要检查执行时间,会不会形成性能瓶颈



A:关于性能是两点,第一点是虚拟机的速度,基于 webAssmbly 和 jit,我们可以每秒执行5万笔转账,大概是eth的10倍速度, 第二点是可水平拆分性, 这是eos的闪光点,交易留可以同时被多个电脑,多个cpu所执行。





 


Q: 当部分运行的是一个子集的网络,你怎么去保证这个运行时不会处理错误的信息



A: EOS 的全节点可以运行和确认所有的东西,每个人都可以通过全节点的网络来确保每件事情都是经过验证的。另外每笔交易都会在一个 merkle tree 上,所以你可以证明导入的已完成的交易是在链上的。你从银行拿到的支票,都会有一些特征,你可能不知道支票的金额,但是知道确实有人给你支付了一笔。这里有一个概念上的冲突,即基于状态的区块链vs基于消息的区块链。EOS是基于消息达到一致的区块链,所有的在链上的消息都被视为是有效的,并且是被执行过的。基于状态的方式,只有在交易正在被执行的时候可以被衡量。对于一个eth合约来说, 你很难证明现在的运行状态,除非它正在运行,所以,就像时间一样,你可以证明它过去的状态,但是你不能判定它现在执行的状态。基于状态,让整个区块链更僵硬,也更难去优化。ETH 在做sharding 的过程中,可以需要使用到消息的。EOS客户端可以去验证所有交易,而且并不需要去跑所有的东西,如果你需要去查询状态,你可以查询多个多个节点,把所有的信息组合起来。

EOS还有其它的王牌,在eos的链上,在签名每笔交易的时候,也签名了EOS宪法。EOS宪法是一份所有用户达成的共识,如果你用一个服务去查询状态,eos会返回一个描述当时状态的签名的声明,如果之后可以证明,用户关于这个声明撒谎了,你可以要求用户为他们撒谎的行为负责。这里有一个,关于,性能,安全,可用性的平衡。我们和ETH最大的不同是,我们的目标是商业服务,更大的应用,就像fackbook,交易所,社交媒体,预测市场。所有这些都需要服务于百万用户,所有的这些服务,都不会在你的家用电脑上运行,通过你的家用网络和互联网连接。大部分这些服务都是完全合法的,不会有政府强行关闭的可能性。所以这些部分是可以运行在有着高带宽的机房的。通过这样去获得的,去中心化,可扩展性对于我们把区块链推向主流市场是非常的重要的。


 


Q: EOS 不像eth有花费模型,你能解释一下么



A: 我们最基础的模型是从steemit拷贝过来的,用户手里有很小一笔资产,大概只有几刀,但这不会妨碍用户进行大部分的交互,你甚至不需有资产,只要有代理的资产。比如你可以对一个用户说,我可以把属于我的网络带宽给你如果你使用这些带宽,其他人可以免费使用这些带宽。

Facebook 为自己的服务器支付费用, 而不是你去支付。商业服务者需要从其他地方获取收益,而不是通过每打开一个页面都要求一些收益。ETH的fee模型,是不可控制的,你总是会把你的eth用光。但是,在eos上你可以始终用一个慢速交易。对于开发者来说,租赁和拥有在应用之后的硬件是有区别的。我们也始终在为spam做准备,限流算法意味着,当你进行ico的时候,不会有能阻断普通用户的限流攻击出现。


 


Q:EOS 可以卖出流量使用权么,有些时刻我需要应对大量的流量,有些时候我并不需要



A:这有点像你的网络服务商,他们会给你一个基本带宽,但是你可以升级到更高的容量,如果其他人并没有在使用。如果你有1%的EOS,只有当网络100%使用的时候,你才会被限流到只有1%的带宽,对于大多数人来说,只有当网络被充满的时候,才会限流。


 


Q:如何比较 DPOS 和 Casper



A: 一致性算法有这样几个方面,谁应该打包区块,什么时间应该打包区块,怎么能确定区块本身是不可逆的。pow假设我们有很多忠诚的算力在竞争,第一个发现问题答案的生产者,会拥有打包的时间和决定权,在经过如此多的确认之后,这个变成了不可逆的了。在EOS里,你有股票,也有投票权,去选择哪些人去生产区块, 这些区块生产者,就像eth的矿池一样。我习惯这样去想,比特币和eth实际上是代理模式的pow,那些生产区块的人,和那些指派矿池的人不是同一批人。在EOS里,我们通过投票确认谁去生产,接下来的问题就是什么时间去生产接下来的区块。我们的dpos算法可以让所有的参与的算力者,轮流去生产区块。这样就意味着我们不会有孤儿区块。理论上来说,矿池也可以做到这一样的事情,只是他们的一致性算法不允许他们这样出块。这和casper 比怎么样。Casper 没有真正解决谁应该打包和什么时间出块的问题。Casper 创造每100个区块创造了一个检查点,超过这个检查点,意味着之前的区块都是可信的。Casper在对短期的区块的安全性上做的并不够。每个基于投票的区块链最终归于一个问题,谁在做投票。美联储实际上会为美元升值降值投票,拥有美元的人们在这个问题上没有话语权。就像矿工投票,不要从pow上移开,因为这牵扯到了他们的利益。所有的这些都是错位的激励,dpos工作就像一家公司,选择董事会,让董事会生产区块。这个激励是符合逻辑的。


 


Q:Casper 实际可以认为是所有人来做proof



A:这里有两个角色,区块生产者不意味着区块会被接受,生产区块只是一个提议,这里有一个区块,区块生产者没有权利去生产一个无效的区块,区块生产者没有权利去改变社区的已达成的一致性。你想想一下,现实世界中的一致性,我们只是使用软件,来提高我们达成一致性的速度。dpos 继承了现实世界中的检查者和生产者,他们是两个角色,而不是一个角色。在Casper里用户可能会生产没有交易的空块,这种在steemit和bts上是不会有的,因为,人们不被允许运行非标准的软件。Casper 这种通过奖赏达成一致性,在博弈论上看是非常完美的,但是当真正使用的时候,就需要考虑人性。


 


Q:DPOS 如何做自治的管理,我认为有两层,一层是协议层面的治理,比如进化和改变一致性算法,一层是应用层面的治理,比如应用有bug,我们需要回滚,你可以帮我们探讨下这两层的自治么



A: 第一层实际上是软件层面的宪法,是有所有的节点上跑的软件决定的。持票者选择区块生产者,决定什么时间去硬分叉。EOS是不会有硬分叉的,当整个网络决定是升级的时候,那些节点不知道怎么去做升级的会被自动关闭。而区块的生产者,也会等到升级后再生产区块,所以即使在你升级的时候,你也不会错失任何一个区块。steem 过去每个月都会有一个大的升级,过去大概进行了18次升级,没有一次会有硬分叉。EOS的一条哲学是,事物需要改变,最适者生存,而不是最强者生存。这也是自由市场的原则,长期来看,如果你不改变,那你就会被淘汰。所以eos被设计为一条可以持续不停进化的链。 这就是第一层的治理。

对于第二层治理,比如开发者开发了一个DAO,那里有一个bug,所有的资金都被偷走了,发行者拥有在没有硬分叉的前提下,升级合约的权利。区块生产者,有审查区块的权利。完美的代码是不可能的,Bug始终会发生,这是EOS认识到的,而其他的平台可能没有意识到的一个问题。即使代码被安全运行了多年,里面还是可能有隐藏的bug。之前一段时间,bts就有这样的一个隐藏bug,非常微妙的情况下,会把所有的生产者给冻结。我们都依赖的SSL,所有的电脑都在用,实际上也是有不安全的问题。代码不是完美的,我们需要有恢复的手段,我们围绕这点做设计。这种方式允许开发者,自己去建立自己的治理层,他们可以创建投票为是否可以更新代码。在其他的一些区块链上,身份和财产是分离的,拥有私钥这个身份,即使你通过hack电脑获得了私钥,并不意味着,你就真的是这个财产的所有人。身份和财产权,是系统想要去保护的,期望完整符合法律,而不是9/10的复合法律。





 


Q: 我们想讨论一下,EOS为期一年的token分发是怎么设计的,这样设计为了什么



A: 我想达到这样几件事,社区驱动的大范围的token分发,对于大部分人参与的公平的机会,这是我们的高级目标。我们构建这样一个ico去模拟挖矿,挖矿是你花费一部分电费来换取生产区块的可能性,但是当你开始挖矿的时候,你不知道有多少人同时也在准备开始挖矿,所以你无法预测当时拿到区块的成本,你只能自己给有一个大概的估计,难度是多少,我的成本可能是多少。我们据此构建了一个长达一年窗口的ico,而不是让人们在10分钟的窗口梭哈大量的金钱。这个ICO让人们在一段时间内忙碌,我们希望有一个更长的时间去开发EOS。EOS将会有一个测试网络,并且到今天为止,大部分的功能都完成了。我们意识到开发一个区块链软件,直到真实上线,是一个戏剧性的漫长过程。你需要仔细测试,通知交易所接入,在区块链的开发后期,开发进展速度会大幅度下降。我们希望有额外的六个月时间,在我们开发完一个最小化可运行的区块链之后,在这段时间里,我们可以快速的增强软件,其它开发者也可以在这段时间内开始开发他们的应用,这里遵循了一个哲学,严肃的软件,需要三到六个月去开发(到稳定)。所以当区块链启动的时候,人们也可以有能力去启动他们的应用。这是为什么我们要做一个一年的代币分发。


 


Q:用户还注意到,你们一开始有一个窗口



A:20%token 前7天,之后每天会有两百万的eos等待认购。所以每天的EOS的一级市场的价格,取决于在这个区间内人们认购的ETH的数量。所以没有人知道最终价格会是多少,即使那些在最后去投的人们。

我们大概产生了3亿美元的收入,这个收入并不是投资,我们利用这笔钱来构建产品。分发代币的目的在于,把token分发的越广泛越好,我们把原来100%在我们手里的token给分发给市场,这是我们在做的事情,


 


Q:这里有一个问题,你说这些收入不是投资



A: 我们是在开曼群岛的公司,所有的我们开发软件的资金,都来自于之前的代币分发。我们只会生产软件,我们甚至不会自己启动网络,对于纽约交易说来说,创建纽约交易的软件和真正运营纽约交易所,是有区别的。我们创建软件,并把软件给分发出去,EOS软件可能并没有价值,除非社区的人民决定使用我们的软件去启动一条链,这条链会根据erc20 去分发真正的token。


 


Q: 如何你们打算盈利,打算怎么盈利



A:我们对我们在block.one 所做的事情会有一个更详细的计划。我们会构建软件,和构建基础架构来构建我们的区块链生意。我们会继续构建EOS,但是EOS的回报可能要等到有人真正启动这条链之后。


 


Q: 我们的意思是,你们赚了很多钱



A: 我们的公司是由发现自由市场的解决方案的责任感所驱动。我们想创造改变世界的技术,就像APPLE也获取了他的收益,他们把收益投入到构建下一代伟大的东西中。他们从Mac中获得利润,用这些利润构建了iPod,从iPod获得利润,用这些收益构建了iPhone。我们有很多可以对世界产生积极影响的事情可以做。


 


Q: 其它的领域内会有这种专款专用的基金,从而来限制钱的使用。



A: 我不是律师,但是我们看到了SEC对DAO的态度,我们希望确保EOS的token分发复合所有的法律。所以条款是,这个token分发不代表任何对block.one 的期待,block.one 也不会去做任何的事情。我们唯一会做的事情,就是开发开源软件。


 


Q:为什么你们会发 Erc20 的token



A:没有经过分发的代币会遇到问题,如果你想要一条区块链,那么你就要经过初次代币分发。按我们的计划,代币分发和网络软件准备会同时完成,如果我们先构建软件,那么我们在之前还是要解决代币分发的问题,这个时间是不可省的。


 


Q: 你怎么可以保证,这些钱会被用于你许诺的事情



A: 我不能做任何保证,任何形式的都不能,任何形式的许诺都会被归结到财产类。我们没有许诺这件事实际上是EOS不被归结为财产的决定性因素。


 


Q: Civic 教育是以购买软件的形式,你们不考虑换用捐赠外的其它方式?



A:这个分发相当于分饼,每个拿到饼的人,可以拿到我们免费且开源的软件,来启动链。这个协议实际上是由市场里所有用钱参与了代币分发的人决定的,他们的所做所为和blockone 没有任何关系。但是如果你要问我的人生目标,包括block.one的目标,我们的目标不是钱,我们的目标是改变世界,给我的孩子们创建一个非组织非暴力的自由的世界。steem 给我最大的激励是,有些在非洲的穷人,现在过上了中产的生活,因为我开发的软件。这是让我每天早上起床的动力,当你有了一些钱之后,有更多的钱,不是什么重要的事情。我会继续尽我最大的努力,去找到一个自由市场的解决方案。


 


Q: 讨论一个 roadmap



A: 每个人都可以在github上看到进度,如果你是一个开发人员,你可以很简单的确认进度,我们现在,就是有了一个p2p的网络,有了合约的功能,我们接下来一段会完善开发文档,创建一些其它的工具,在今年年底,我们希望可以有一个其它开发者可以使用的软件。接下来是5个月的测试,压力测试,和一些微调。当eos发布的时候,人们需要去竞赛,如何熟悉软件,如何成为初始的区块生产者,从那点开始,每秒两万五到五万交易会是我们的单线程应用的目标,这个单线程实现,可以升级到多线程实现而不需要违反一致性,现在主要是,安全第一,性能第二。我们设计eos就是为了并行,可水平拓展设计的。现在是为了多线程设计,但是实现用了单线程,仅仅是现在的容量,实际上已经很大了。我们后续会继续升级,这是我们的长期计划。


 


Q:你们希望如何联系你们



A:在steem上follow我和block.one,订阅我们的邮件组。

Bitshares 2.0 中 object 的 ID

EOS代码分析北溟客 发表了文章 • 0 个评论 • 319 次浏览 • 2017-10-11 21:52 • 来自相关话题

相比较大多数加密货比钱包,BitShares 2.0有一个描述区块链、交易和账户的独特模型。BitShares 区块链中通过object存储各种信息,构成一个庞大的数据库,但是在BitShares 区块链上没有地址,object通过将唯一的id、type和space通过以下形式进行组合完成唯一标识:space.type.id下面是通常使用的对象的列表:[b]ID Object Type
[/b]
1.1.x base object
1.2.x account object
1.3.x asset object
1.4.x force settlement object
1.5.x committee member object
1.6.x witness object
1.7.x limit order object
1.8.x call order object
1.9.x custom object
1.10.x proposal object
1.11.x operation history object
1.12.x withdraw permission object
1.13.x vesting balance object
1.14.x worker object
1.15.x balance object
2.0.x global_property_object
2.1.x dynamic_global_property_object
2.3.x asset_dynamic_data
2.4.x asset_bitasset_data
2.5.x account_balance_object
2.6.x account_statistics_object
2.7.x transaction_object
2.8.x block_summary_object
2.9.x account_transaction_history_object
2.10.x blinded_balance_object
2.11.x chain_property_object
2.12.x witness_schedule_object
2.13.x budget_record_object
2.14.x special_authority_object第一位数字“1”或者“2”代表不同的空间,“1”表示协议空间(Protocol Space),“2”表示实现空间(Implementattion Space)。
对于那些想处理graphene的C++代码的高级用户,我们在这里列出object_type和impl_object_type定义
协议空间(1.x.x)enum graphene::chain::object_type这个枚举列出各个命名空间所有的object类型,这样这些object可以很容易地在调试输出显示出来。如果一个第三方希望能够拓展核心代码,他将必须将packed_object::type域的类型从enum_type改为uint16,从而避免在进行packed_objects和json相互转换的过程中出现警告。Values:
null_object_type
base_object_type
account_object_type
asset_object_type
force_settlement_object_type
committee_member_object_type
witness_object_type
limit_order_object_type
call_order_object_type
custom_object_type
proposal_object_type
operation_history_object_type
withdraw_permission_object_type
vesting_balance_object_type
worker_object_type
balance_object_type

OBJECT_TYPE_COUNT //哨兵值(Sentry value)包含不同类型的对象的数量。实现空间(2.x.x)enum graphene::chain::impl_object_type下面是实现空间中的类型的值Values:
impl_global_property_object_type
impl_dynamic_global_property_object_type
impl_reserved0_object_type
impl_asset_dynamic_data_type
impl_asset_bitasset_data_type
impl_account_balance_object_type
impl_account_statistics_object_type
impl_transaction_object_type
impl_block_summary_object_type
impl_account_transaction_history_object_type
impl_blinded_balance_object_type
impl_chain_property_object_type
impl_witness_schedule_object_type
impl_budget_record_object_type
impl_special_authority_object_type
impl_buyback_object_type
impl_fba_accumulator_object_type在具体的实现中,使用最后一个ID值表示存储的信息的索引。使用如下代码可以显示一个存储对象的具体的ID的值:string witness_id_example = fc::json::to_string(chain::witness_id_type(5));
std::cout << witness_id_example << std::endl;其输出为:$ 1.6.5这里假设一个witness对象的具体的ID为5, 则这个对象在数据库中完整的索引值就是“1.6.5”。 查看全部
相比较大多数加密货比钱包,BitShares 2.0有一个描述区块链、交易和账户的独特模型。BitShares 区块链中通过object存储各种信息,构成一个庞大的数据库,但是在BitShares 区块链上没有地址,object通过将唯一的id、type和space通过以下形式进行组合完成唯一标识:
space.type.id
下面是通常使用的对象的列表:
[b]ID	    Object Type
[/b]
1.1.x base object
1.2.x account object
1.3.x asset object
1.4.x force settlement object
1.5.x committee member object
1.6.x witness object
1.7.x limit order object
1.8.x call order object
1.9.x custom object
1.10.x proposal object
1.11.x operation history object
1.12.x withdraw permission object
1.13.x vesting balance object
1.14.x worker object
1.15.x balance object
2.0.x global_property_object
2.1.x dynamic_global_property_object
2.3.x asset_dynamic_data
2.4.x asset_bitasset_data
2.5.x account_balance_object
2.6.x account_statistics_object
2.7.x transaction_object
2.8.x block_summary_object
2.9.x account_transaction_history_object
2.10.x blinded_balance_object
2.11.x chain_property_object
2.12.x witness_schedule_object
2.13.x budget_record_object
2.14.x special_authority_object
第一位数字“1”或者“2”代表不同的空间,“1”表示协议空间(Protocol Space),“2”表示实现空间(Implementattion Space)。
对于那些想处理graphene的C++代码的高级用户,我们在这里列出object_type和impl_object_type定义
协议空间(1.x.x)
enum graphene::chain::object_type
这个枚举列出各个命名空间所有的object类型,这样这些object可以很容易地在调试输出显示出来。如果一个第三方希望能够拓展核心代码,他将必须将packed_object::type域的类型从enum_type改为uint16,从而避免在进行packed_objects和json相互转换的过程中出现警告。
Values:
null_object_type
base_object_type
account_object_type
asset_object_type
force_settlement_object_type
committee_member_object_type
witness_object_type
limit_order_object_type
call_order_object_type
custom_object_type
proposal_object_type
operation_history_object_type
withdraw_permission_object_type
vesting_balance_object_type
worker_object_type
balance_object_type

OBJECT_TYPE_COUNT //哨兵值(Sentry value)包含不同类型的对象的数量。
实现空间(2.x.x)
enum graphene::chain::impl_object_type
下面是实现空间中的类型的值
Values:
impl_global_property_object_type
impl_dynamic_global_property_object_type
impl_reserved0_object_type
impl_asset_dynamic_data_type
impl_asset_bitasset_data_type
impl_account_balance_object_type
impl_account_statistics_object_type
impl_transaction_object_type
impl_block_summary_object_type
impl_account_transaction_history_object_type
impl_blinded_balance_object_type
impl_chain_property_object_type
impl_witness_schedule_object_type
impl_budget_record_object_type
impl_special_authority_object_type
impl_buyback_object_type
impl_fba_accumulator_object_type
在具体的实现中,使用最后一个ID值表示存储的信息的索引。使用如下代码可以显示一个存储对象的具体的ID的值:
string witness_id_example = fc::json::to_string(chain::witness_id_type(5));
std::cout << witness_id_example << std::endl;
其输出为:
$ 1.6.5
这里假设一个witness对象的具体的ID为5, 则这个对象在数据库中完整的索引值就是“1.6.5”。

寻找下一个以太坊系列(2):EOS

EOS其他相关郑浩 发表了文章 • 0 个评论 • 398 次浏览 • 2017-09-30 15:49 • 来自相关话题

今天我们来看下EOS(纯技术角度)

EOS定位下一代区块链智能合约平台,致力于解决当前区块链技术中的一些关键挑战:性能、用户体验和治理。目前,EOS处于待发布测试网络的阶段; 没有生产运行的区块链、虚拟机、智能合约开发环境。EOS基于开发Bitshares和Steem平台的多年实践经验,最关键的是该项目“不差钱”。

EOS宣称颠覆以太坊的几大方面:更高的交易吞吐量、0成本交易和结构化治理。下面我们进一步了解一下。

交易吞吐量

EOS通过引入(如代理权益证明(DPoS))、并行处理、加快验证和其他优化技术来实现超越以太坊的性能水平。当然,Ethereum生态系统也正在研究和开发类似的改进。

尽管听着相似,但是EOS的代理权益证明共识机制与Ethereum提出的Casper协议几乎没有共同之处。在EOS中,由一组21名当选者负责轮流出块。这种模式必须高度信任这些当选者,EOS假设去中心化投票过程可以消除恶意/错误的当选者。而在Casper中,任何愿意存入ETH的人都可以参与共识,恶意/错误的行为将因保证金损失而受到惩罚。目前,以太坊正在严格地实施理论验证,并谨慎地分阶段实施PoS切换,而EOS先期会对Bitshares的DPoS进行重新包装上线,主网可能要等到Ethereum完全转变为纯PoS实施很久后才开始运行。所以EOS所使用的DPoS算法能否在全网有巨大经济价值时可以抵御串通/抵制审查/拒绝服务(DoS)攻击等风险还有待观察。

EOS通过对操作不同账户的交易采取并行执行的方式来提高吞吐率。EOS白皮书描述了一种将区块分解为并行线程的方法,但缺少如何完成独立事务确定性的细节。Ethereum的EIP 648描述了一种在现有区块结构中进行并行事务处理的机制。目前不清楚是EOS还是以太坊谁会先支持并行处理,是否能带来显著的性能优势同样有待验证。

理论上,可以通过仅验证事务的子集来实现性能提升。EOS白皮书描述了部分验证的好处和挑战,但没有提供实施细节。在以太坊中,对加速验证做了大量研究分析(总结在这里),不过社区还没形成一个工程解决方案。两者都处于理论验证期,需要大量时间积累经验并投入生产。

EOS虚拟机支持Web Assembly指令集,它允许预编译的合约接近原始程序的执行效率。而Ethereum Flavored Web Assembly(eWASM)项目正在寻找兼容现有智能合约的方式替换EVM。

在提升交易TPS的问题上,EOS可能具备先发优势,因为它无需承担网络巨大经济体量的风险。如果以太坊不能快速跟进,可能会失去市场份额。不过,随着EOS网络的价值(代币价值)增加,它可能会吸引不可预知的新型攻击,黑客们会利用EOS高性能设计挖掘漏洞,所以,这非常考验EOS的投票机制来预防这种攻击。

无需"燃料"的交易

EOS和Ethereum交易均依赖代币。不同的是,在EOS中,通过向矿工证明存款额获取交易资格,而Ethereum用户直接向矿工支付“燃料”手续费。

EOS凭借免费交易模式来推广应用服务(即智能合约),这种变相补贴模式是一种常见的互联网玩法,用户可以“免费”使用服务,通过其他方式获取利润。但是,公有链设置交易费用的目的主要是提高垃圾交易和DoS攻击的成本,保护智能合约和区块链免受攻击。任何公有链如果发生类似的攻击事件,可能需要付出昂贵代价的硬分叉来解决。

EOS通过使用动态部分预留系统来为用户分配交易所需的带宽,网络根据持有代币占比为用户分配交易所需带宽,并且会参考当时网络的拥塞程度动态调整。通过动态收紧预留,增加攻击的总体成本来抵御攻击。在现有环境下,这种自适应的防御方式可以为EOS带来一定优势,因为以太坊的交易价格是预先设定的。如果这种模式有效,以太坊可以通过两种方式来弥补劣势:1)DApps可以对用户实施交易费返还;2)大都会版本允许由合约支付燃料费用。这些措施的好处是,如果事实证明交易费用对某些场景是必要的,那么可以在每个应用程序上自主设置交易双方谁支付交易费的机制提供了较好的灵活性。

结构化治理

以太坊的治理结构由开发者、矿工和用户组成。协议的升级更新是借由EIP以太坊改进建议的社区驱动模式来管理的,但是一些容量参数(例如区块燃料限制)可以由矿工动态调整。

以太坊的治理遭受了DAO事件的考验,其中近15%的ETH被盗。找回资金的硬分叉由一群意见领袖提出并获得社区大多数人的支持,最终这导致了一次网络分叉,反对的人选择支持原链(即以太经典)。这次事件被认为降低了网络的安全性和整体价值,因此越来越多人开始讨论结构化治理结构,可以在不产生社区分裂的情况下解决问题。在社区中提出了许多链上治理机制的提案(EIP182),但还没有正式的结构披露出来。

相较而言,EOS白皮书描述了协议内置的一些机制。在EOS中由用户选出的记账者负责执行某些治理职能,占多数的(17/21或大约80%)当选者可以有权冻结账户、更新有缺陷的智能合约代码、决策是否分叉。如果当选者的权力不被滥用,就可以有效防范盗窃或故障事件。EOS希望通过系统规则保障大多数人的利益,然而,但通过采用投票和少数服从多数的规则,EOS希望有系统地为大多数人谋利益。唯一不确定的是,用户会愿意将自己的权力交给少数代表,或者这种结构可以阻止少数人的分裂。

结论

EOS提出了一系列性能优化、降低交易手续费、改善治理的解决方案。这些机制的实现高度依赖全体用户对21位当选代表的信任,用户需要利用投票权来防止当选者的作恶行为。

如果这些机制在达到一定网络规模后被验证有效,EOS将在分布式账本领域取得重大进展。在以太坊上发生的智能合约安全事件提醒我们,导致黑客能够从用户账号盗取数百万的漏洞永远是最紧急和最重要的问题,而交易TPS和交易成本永远是次要的。

目前,最有可能超越以太坊的平台应当是提供了更好的智能合约安全性,同时兼具一定的可扩展性。很可惜,EOS的总体设计并不是这个方向,其设计的重心在于功能性上强于以太坊,安全性并未经过严格的工程证明。而以太坊的有关白皮书包括安全性证明、攻击预估成本、故障阈值和其他安全性设计的参数,而EOS有关白皮书则主要介绍基础工作机制,显然欠缺对安全性的描述。不过我们相信,未来EOS一定会发布更加详细的攻击成本分析、安全机制说明等,这些安全性的要求不应该来自实验,而应该通过大量实践运行,这才能够证明EOS具备超越以太坊的能力。

当前威胁级别:

较低
 
作者:季宙栋
文章来源:知乎
  查看全部
今天我们来看下EOS(纯技术角度)

EOS定位下一代区块链智能合约平台,致力于解决当前区块链技术中的一些关键挑战:性能、用户体验和治理。目前,EOS处于待发布测试网络的阶段; 没有生产运行的区块链、虚拟机、智能合约开发环境。EOS基于开发Bitshares和Steem平台的多年实践经验,最关键的是该项目“不差钱”。

EOS宣称颠覆以太坊的几大方面:更高的交易吞吐量、0成本交易和结构化治理。下面我们进一步了解一下。

交易吞吐量

EOS通过引入(如代理权益证明(DPoS))、并行处理、加快验证和其他优化技术来实现超越以太坊的性能水平。当然,Ethereum生态系统也正在研究和开发类似的改进。

尽管听着相似,但是EOS的代理权益证明共识机制与Ethereum提出的Casper协议几乎没有共同之处。在EOS中,由一组21名当选者负责轮流出块。这种模式必须高度信任这些当选者,EOS假设去中心化投票过程可以消除恶意/错误的当选者。而在Casper中,任何愿意存入ETH的人都可以参与共识,恶意/错误的行为将因保证金损失而受到惩罚。目前,以太坊正在严格地实施理论验证,并谨慎地分阶段实施PoS切换,而EOS先期会对Bitshares的DPoS进行重新包装上线,主网可能要等到Ethereum完全转变为纯PoS实施很久后才开始运行。所以EOS所使用的DPoS算法能否在全网有巨大经济价值时可以抵御串通/抵制审查/拒绝服务(DoS)攻击等风险还有待观察。

EOS通过对操作不同账户的交易采取并行执行的方式来提高吞吐率。EOS白皮书描述了一种将区块分解为并行线程的方法,但缺少如何完成独立事务确定性的细节。Ethereum的EIP 648描述了一种在现有区块结构中进行并行事务处理的机制。目前不清楚是EOS还是以太坊谁会先支持并行处理,是否能带来显著的性能优势同样有待验证。

理论上,可以通过仅验证事务的子集来实现性能提升。EOS白皮书描述了部分验证的好处和挑战,但没有提供实施细节。在以太坊中,对加速验证做了大量研究分析(总结在这里),不过社区还没形成一个工程解决方案。两者都处于理论验证期,需要大量时间积累经验并投入生产。

EOS虚拟机支持Web Assembly指令集,它允许预编译的合约接近原始程序的执行效率。而Ethereum Flavored Web Assembly(eWASM)项目正在寻找兼容现有智能合约的方式替换EVM。

在提升交易TPS的问题上,EOS可能具备先发优势,因为它无需承担网络巨大经济体量的风险。如果以太坊不能快速跟进,可能会失去市场份额。不过,随着EOS网络的价值(代币价值)增加,它可能会吸引不可预知的新型攻击,黑客们会利用EOS高性能设计挖掘漏洞,所以,这非常考验EOS的投票机制来预防这种攻击。

无需"燃料"的交易

EOS和Ethereum交易均依赖代币。不同的是,在EOS中,通过向矿工证明存款额获取交易资格,而Ethereum用户直接向矿工支付“燃料”手续费。

EOS凭借免费交易模式来推广应用服务(即智能合约),这种变相补贴模式是一种常见的互联网玩法,用户可以“免费”使用服务,通过其他方式获取利润。但是,公有链设置交易费用的目的主要是提高垃圾交易和DoS攻击的成本,保护智能合约和区块链免受攻击。任何公有链如果发生类似的攻击事件,可能需要付出昂贵代价的硬分叉来解决。

EOS通过使用动态部分预留系统来为用户分配交易所需的带宽,网络根据持有代币占比为用户分配交易所需带宽,并且会参考当时网络的拥塞程度动态调整。通过动态收紧预留,增加攻击的总体成本来抵御攻击。在现有环境下,这种自适应的防御方式可以为EOS带来一定优势,因为以太坊的交易价格是预先设定的。如果这种模式有效,以太坊可以通过两种方式来弥补劣势:1)DApps可以对用户实施交易费返还;2)大都会版本允许由合约支付燃料费用。这些措施的好处是,如果事实证明交易费用对某些场景是必要的,那么可以在每个应用程序上自主设置交易双方谁支付交易费的机制提供了较好的灵活性。

结构化治理

以太坊的治理结构由开发者、矿工和用户组成。协议的升级更新是借由EIP以太坊改进建议的社区驱动模式来管理的,但是一些容量参数(例如区块燃料限制)可以由矿工动态调整。

以太坊的治理遭受了DAO事件的考验,其中近15%的ETH被盗。找回资金的硬分叉由一群意见领袖提出并获得社区大多数人的支持,最终这导致了一次网络分叉,反对的人选择支持原链(即以太经典)。这次事件被认为降低了网络的安全性和整体价值,因此越来越多人开始讨论结构化治理结构,可以在不产生社区分裂的情况下解决问题。在社区中提出了许多链上治理机制的提案(EIP182),但还没有正式的结构披露出来。

相较而言,EOS白皮书描述了协议内置的一些机制。在EOS中由用户选出的记账者负责执行某些治理职能,占多数的(17/21或大约80%)当选者可以有权冻结账户、更新有缺陷的智能合约代码、决策是否分叉。如果当选者的权力不被滥用,就可以有效防范盗窃或故障事件。EOS希望通过系统规则保障大多数人的利益,然而,但通过采用投票和少数服从多数的规则,EOS希望有系统地为大多数人谋利益。唯一不确定的是,用户会愿意将自己的权力交给少数代表,或者这种结构可以阻止少数人的分裂。

结论

EOS提出了一系列性能优化、降低交易手续费、改善治理的解决方案。这些机制的实现高度依赖全体用户对21位当选代表的信任,用户需要利用投票权来防止当选者的作恶行为。

如果这些机制在达到一定网络规模后被验证有效,EOS将在分布式账本领域取得重大进展。在以太坊上发生的智能合约安全事件提醒我们,导致黑客能够从用户账号盗取数百万的漏洞永远是最紧急和最重要的问题,而交易TPS和交易成本永远是次要的。

目前,最有可能超越以太坊的平台应当是提供了更好的智能合约安全性,同时兼具一定的可扩展性。很可惜,EOS的总体设计并不是这个方向,其设计的重心在于功能性上强于以太坊,安全性并未经过严格的工程证明。而以太坊的有关白皮书包括安全性证明、攻击预估成本、故障阈值和其他安全性设计的参数,而EOS有关白皮书则主要介绍基础工作机制,显然欠缺对安全性的描述。不过我们相信,未来EOS一定会发布更加详细的攻击成本分析、安全机制说明等,这些安全性的要求不应该来自实验,而应该通过大量实践运行,这才能够证明EOS具备超越以太坊的能力。

当前威胁级别:

较低

 
作者:季宙栋
文章来源:知乎