EOS新闻动态

EOS新闻动态

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

EOS技术讨论

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

EOS众筹价格

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

EOS其他相关

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

EOS学习笔记1-EOS Command Line Client (eosc)

EOS代码分析郑浩 发表了文章 • 1 个评论 • 1700 次浏览 • 2017-09-19 11:43 • 来自相关话题

大家好,EOS发布了DAWN1.0版本,我按照官方的文档安装做了下测试,分享给大家,我建了一个EOS的中文爱好者社区,欢迎各位EOS爱好者来这里讨论EOS www.eos.top
 

 内容介绍
EOSC介绍创建钱包将私钥导入到钱包锁定和解锁钱包打开钱包创建账户转账获取交易信息创建一个合约向合约推送消息。查询合约链接特定的节点。使用单独的钱包应用程序。跳过签名部分。附加文档。
 
EOSC钱包介绍
 
eosc是一个和eosd暴露的REST api交互的命令行工具。为了eosc的正常使用,你需要在本地运行一个eosd的副本并在配置文件config.ini中载入'plugin = eos::chain_api_plugin'。为了签署交易并推送到区块链中,你需要载入‘plugin = eos::wallet_api_plugin’。为了查询账户的交易和历史记录,你需要载入 'eos::account_history_api_plugin' 。# Plugin(s) to enable, may be specified multiple times
plugin = eos::producer_plugin
plugin = eos::chain_api_plugin
plugin = eos::wallet_api_plugin
plugin = eos::account_history_api_plugin当你启动eosd后,你应该可以查询当前的区块链状态$ ./eosc get info
{
"head_block_num": 1635,
"last_irreversible_block_num": 1618,
"head_block_id": "000006638f62a7a03a2d9140d2c9889c148bb62a2c9f6f5efd12d364b1fa5f60",
"head_block_time": "2017-09-19T03:56:24",
"head_block_producer": "initj",
"recent_slots": "0000000000000000000000000000000000000000000000000000000000001111",
"participation_rate": "0.06250000000000000"
}





 
创建钱包
 
任何发送到区块链的交易都需要用所有者各自的私钥进行签名。在你签名交易之前,你需要一个钱包来储存和管理私钥。$ ./eosc wallet create
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5JD9cw9YY288AXPvnbwUk5JK4Cy6YyZ83wzHcshu8F2akU9rRWE这将在eos-walletd中创建一个名为‘default’的钱包,并返回钱包密码,请将钱包密码保存好,以后可以用来解锁钱包。
 
你可以指定名称来创建多个不同的钱包。$ ./eosc wallet create -n zhenghao
Creating wallet: zhenghao
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5KjS8oPZnfXZeE4RmYnWGfegKa5vHH2zZkaEC7Jms7L1xSmb7v1"





以上命令创建了名称为‘zhenghao’的钱包,你也可以查看你的钱包列表。$ ./eosc wallet list
Wallets:
[
"default *",
"zhenghao *"
]






注意,如果你没有指定特定的钱包名称,对于钱包的任何操作都都归于‘default’默认钱包。
 

 
将私钥导入钱包
 
将私钥导入你想用来签名的钱包中。下面将会导入创世账户(比如,inita,initb,initc,...,initu),在config.ini中。$ ./eosc wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
imported private key for: EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV




你之后可以看到导入的私钥和对应的公钥。$ ./eosc wallet keys
[[
"EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
"5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"
]
]
 
 锁定和解锁钱包
 
为了保证你的私钥安全,锁定你的钱包。~/eos/build/programs/eosc$ ./eosc wallet lock -n zhenghao
Locked: 'zhenghao'

~/eos/build/programs/eosc$ ./eosc wallet lock
Locked: 'default'使用你刚才创建钱包时生成的特定的密钥来解锁钱包。$ ./eosc wallet unlock -n zhenghao --password PW5KjS8oPZnfXZeE4RmYnWGfegKa5vHH2zZkaEC7Jms7L1xSmb7v1
Unlocked: 'zhenghao'

$./eosc wallet unlock --password PW5JPrtWhD686dktsNHe6XfnxudY7fJVVb5fDVsFuigkuBzXGhrpJ
Unlocked: 'default'
这时你就可以在列表中看到你的钱包了$ ./eosc wallet list
Wallets:
[
"default *",
"zhenghao *"
]






注意,钱包默认处于关闭状态。

 
创建一个账户
 
为了创建一个账户,你需要使用两个密钥:owner和active。你可以使用eosc来创建一些密钥对。
 
这将是你的owner key.$ ./eosc create key
Private key: 5KELdbfiBrFaix5K8ZEArCGjfQkGgyXqziTdqGcv5koR8faPybj
Public key: EOS6NpEqWi177VKQkuJQL9V6Y3LqAAp9C2jDsAagMW4uELw72Z2oP这将是你的active key。./eosc create key
Private key: 5KdEcZfHat6DR4hAK1XYZ76hBR93riRz3HpKZrk3yN5a99uZvu4
Public key: EOS5V8geYBkAEtCcs5TMgMsWJqsRk5CMyh5jCvPxbGtGDfnnSXjqP

注意,eosc不会保存生成的私钥。

 
 
接下来我们创建一个名称为tester的账号,但因为所有的账户都需要用已有账户来创建,我们将使用inita账户的owener key和active key来创建tester,inita由创世文件来规定。
为了使用inita来推送交易,你首先要导入inita的私钥到你的钱包。(参见将私钥导入钱包)
那么我们来创建一个名为tester的账户。$ ./eosc create account inita tester EOS6NpEqWi177VKQkuJQL9V6Y3LqAAp9C2jDsAagMW4uELw72Z2oP EOS5V8geYBkAEtCcs5TMgMsWJqsRk5CMyh5jCvPxbGtGDfnnSXjqP
{
"transaction_id": "4bdb92e134342df2ecf33e87120b80da4c1e0ff621e6e4b92ff78aa37b85204c",
"processed": {
"refBlockNum": 4844,
"refBlockPrefix": 3320117640,
"expiration": "2017-09-19T06:37:06",
"scope": [
"eos",
"inita"
],
"signatures": [
"1f28c6969974f32810a35f4fe8e007f848fe86c2b15950ba65095c13bd50a9cbe966e5cd855d4ece025a84bfc2960554b8780cd9b844cd27ff53c193abad803629"
],
"messages": [{
"code": "eos",
"type": "newaccount",
"authorization": [{
"account": "inita",
"permission": "active"
}
],
"data": {
"creator": "inita",
"name": "tester",
"owner": {
"threshold": 1,
"keys": [{
"key": "EOS6NpEqWi177VKQkuJQL9V6Y3LqAAp9C2jDsAagMW4uELw72Z2oP",
"weight": 1
}
],
"accounts":
},
"active": {
"threshold": 1,
"keys": [{
"key": "EOS5V8geYBkAEtCcs5TMgMsWJqsRk5CMyh5jCvPxbGtGDfnnSXjqP",
"weight": 1
}
],
"accounts":
},
"recovery": {
"threshold": 1,
"keys": ,
"accounts": [{
"permission": {
"account": "inita",
"permission": "active"
},
"weight": 1
}
]
},
"deposit": "0.0001 EOS"
},
"hex_data": "000000008040934b00000000004067a1010000000102c4034b92a688a8ee82f57f4406c927f48957cc81b705117522613f38a63b53310100000100000001024ea9a0b042693d858ef159eaf32a91afdb9ac16bfa2c29ad33e5a3c14f045727010000010000000001000000008040934b00000000149be8080100010000000000000004454f5300000000"
}
],
"output": [{
"notify": [],
"deferred_transactions":
}
]
}
}





现在你可以看到tester是inita的一个controlled_account。$ ./eosc get servants inita
{
"controlled_accounts": [
"tester"
]
}
 
转账
在创建账户之后,我们可以查看当前账户的状态。$ ./eosc get account tester
{
"name": "tester",
"eos_balance": 0,
"staked_balance": 1,
"unstaking_balance": 0,
"last_unstaking_time": "1969-12-31T23:59:59",
"permissions": [{
"name": "active",
"parent": "owner",
"required_auth": {
"threshold": 1,
"keys": [{
"key": "EOS7d9A3uLe6As66jzN8j44TXJUqJSK3bFjjEEqR4oTvNAB3iM9SA",
"weight": 1
}
],
"accounts":
}
},{
"name": "owner",
"parent": "owner",
"required_auth": {
"threshold": 1,
"keys": [{
"key": "EOS4toFS3YXEQCkuuw1aqDLrtHim86Gz9u3hBdcBw5KNPZcursVHq",
"weight": 1
}
],
"accounts":
}
}
]
}
你会注意到账号余额为零,因为所有的EOS代币当前都分配给了eos账户和创世账户。$ ./eosc get account eos
{
"name": "eos",
"eos_balance": "69000000.0000 EOS",
"staked_balance": "0.0000 EOS",
"unstaking_balance": "0.0000 EOS",
"last_unstaking_time": "1969-12-31T23:59:59",
"permissions":
}





既然我们有创世账户(比如inita,initb,initc等)的私钥,我们就可以通过任一创世账户使用eosc的以下命令行给tester账户充值。$ ./eosc transfer inita tester 1000
{
"transaction_id": "311ae5affaed2ba943e041dd52000557b3ac9aeda5c80c4ae8cf9156fefe505d",
"processed": {
"refBlockNum": 5104,
"refBlockPrefix": 2510363935,
"expiration": "2017-09-19T06:50:06",
"scope": [
"inita",
"tester"
],
"signatures": [
"1f1b08a06383e1b06fe9298437022abce7ccf362ed6df9438f619c65f3c130c7766aa83d8689fcc16a36c25f7318471a378a42882728112ebb1b010636d156f0db"
],
"messages": [{
"code": "eos",
"type": "transfer",
"authorization": [{
"account": "inita",
"permission": "active"
}
],
"data": {
"from": "inita",
"to": "tester",
"amount": 1000,
"memo": ""
},
"hex_data": "000000008040934b00000000c84267a1e80300000000000000"
}
],
"output": [{
"notify": [{
"name": "tester",
"output": {
"notify": [],
"deferred_transactions":
}
},{
"name": "inita",
"output": {
"notify": ,
"deferred_transactions":
}
}
],
"deferred_transactions":
}
]
}
}





 
现在我们可以验证我们收到的资产。$ ./eosc get account tester
{
"name": "tester",
"eos_balance": "0.1000 EOS",
"staked_balance": "0.0001 EOS",
"unstaking_balance": "0.0000 EOS",
"last_unstaking_time": "1969-12-31T23:59:59",
"permissions": [{
"name": "active",
"parent": "owner",
"required_auth": {
"threshold": 1,
"keys": [{
"key": "EOS7d9A3uLe6As66jzN8j44TXJUqJSK3bFjjEEqR4oTvNAB3iM9SA",
"weight": 1
}
],
"accounts":
}
},{
"name": "owner",
"parent": "owner",
"required_auth": {
"threshold": 1,
"keys": [{
"key": "EOS4toFS3YXEQCkuuw1aqDLrtHim86Gz9u3hBdcBw5KNPZcursVHq",
"weight": 1
}
],
"accounts":
}
}
]
}





 
获取交易信息
 
使用account_history_api_plugin,我们可以查询特定的交易。$ ./eosc get transaction eb4b94b72718a369af09eb2e7885b3f494dd1d8a20278a6634611d5edd76b703
{
"transaction_id": "eb4b94b72718a369af09eb2e7885b3f494dd1d8a20278a6634611d5edd76b703",
"processed": {
"refBlockNum": 2206,
"refBlockPrefix": 221394282,
"expiration": "2017-09-05T08:03:58",
"scope": [
"inita",
"tester"
],
"signatures": [
"1f22e64240e1e479eee6ccbbd79a29f1a6eb6020384b4cca1a958e7c708d3e562009ae6e60afac96f9a3b89d729a50cd5a7b5a7a647540ba1678831bf970e83312"
],
"messages": [{
"code": "eos",
"type": "transfer",
"authorization": [{
"account": "inita",
"permission": "active"
}
],
"data": {
"from": "inita",
"to": "tester",
"amount": 1000,
"memo": ""
},
"hex_data": "000000008040934b00000000c84267a1e80300000000000000"
}
],
"output": [{
"notify": [{
"name": "tester",
"output": {
"notify": [],
"sync_transactions": ,
"async_transactions":
}
},{
"name": "inita",
"output": {
"notify": ,
"sync_transactions": ,
"async_transactions":
}
}
],
"sync_transactions": ,
"async_transactions":
}
]
}
}
同样我们可以查询一个特定账户重开始到最近一次的交易记录。$ ./eosc get transactions inita
[
{
"transaction_id": "eb4b94b72718a369af09eb2e7885b3f494dd1d8a20278a6634611d5edd76b703",
...
},
{
"transaction_id": "6acd2ece68c4b86c1fa209c3989235063384020781f2c67bbb80bc8d540ca120",
...
},
...
]
 
创建智能合约
 
在这一部分我们将使用eosc来创建一个并发布一个货币合约。你可以在eos/contracts/currency 文件夹中找到货币合约的例子。
第一步为货币来创建一个账户。我们将使用inita来创建一个currency账户。请确认你的inita的私钥已导入。$ ./eosc create account inita currency EOS6NpEqWi177VKQkuJQL9V6Y3LqAAp9C2jDsAagMW4uELw72Z2oP EOS5V8geYBkAEtCcs5TMgMsWJqsRk5CMyh5jCvPxbGtGDfnnSXjqP
{
"transaction_id": "7ec42f095b2c39f9b854ec2262cec949f7107051dbc5fdd68d6776091f5567db",
"processed": {
"refBlockNum": 5460,
"refBlockPrefix": 3499954811,
"expiration": "2017-09-19T07:07:57",
"scope": [
"eos",
"inita"
],
"signatures": [
"1f5a82513f293e1a053ebda13718ffc40dd0d81876ebf5302665083d1f0c261c0623b37480459cbd3b49d03ed7d50456f0d8bb665c2dc43914192f30e1e13bb9a4"
],
"messages": [{
"code": "eos",
"type": "newaccount",
"authorization": [{
"account": "inita",
"permission": "active"
}
],
"data": {
"creator": "inita",
"name": "currency",
"owner": {
"threshold": 1,
"keys": [{
"key": "EOS6NpEqWi177VKQkuJQL9V6Y3LqAAp9C2jDsAagMW4uELw72Z2oP",
"weight": 1
}
],
"accounts":
},
"active": {
"threshold": 1,
"keys": [{
"key": "EOS5V8geYBkAEtCcs5TMgMsWJqsRk5CMyh5jCvPxbGtGDfnnSXjqP",
"weight": 1
}
],
"accounts":
},
"recovery": {
"threshold": 1,
"keys": ,
"accounts": [{
"permission": {
"account": "inita",
"permission": "active"
},
"weight": 1
}
]
},
"deposit": "0.0001 EOS"
},
"hex_data": "000000008040934b00000079b822651d010000000102c4034b92a688a8ee82f57f4406c927f48957cc81b705117522613f38a63b53310100000100000001024ea9a0b042693d858ef159eaf32a91afdb9ac16bfa2c29ad33e5a3c14f045727010000010000000001000000008040934b00000000149be8080100010000000000000004454f5300000000"
}
],
"output": [{
"notify": [],
"deferred_transactions":
}
]
}
}





 
下一步是发布合约(.wast)和他的abi(.abi)
我们需要将currency的active key导入到钱包中。$ ./eosc wallet import 5Hv22aPcjnENBv6X9o9nKGdkfrW44En6z4zJUt2PobAvbQXrT9z
imported private key for: EOS7d9A3uLe6As66jzN8j44TXJUqJSK3bFjjEEqR4oTvNAB3iM9SA




之后继续设置代码。./eosc set contract currency /.../.../eos/build/contracts/currency/currency.wast /.../.../eos/build/contracts/currency/currency.abi
Reading WAST...
Assembling WASM...
Publishing contract...
{
"transaction_id": "a7591a16f902b4c595b8ffbb220f588abd0172897c40fa689b9133dca3dd2bfc",
"processed": {
"refBlockNum": 5668,
"refBlockPrefix": 502401204,
"expiration": "2017-09-19T07:18:21",
"scope": [
"currency",
"eos"
],
"signatures": [
"1f581f8d46798049648f21bdd7c74c1117813754bb3cf6d3152b0a5da9ca5a269b7d0b2875a5ef94a62bd9ee69fe7bfd84435819b9bf1a7d77e6dd32876d2defca"
],
"messages": [{
"code": "eos",
"type": "setcode",
"authorization": [{
"account": "currency",
"permission": "active"
}
],
"data": "00000079b8......636f756e74"
}
],
"output": [{
"notify": [],
"deferred_transactions":
}
]
}
}





向合约推送消息
 
在合约发布之后,所有的货币初始会分配给currency账户。因此让我们转给tester一些。
 
我们可以区块链合约的.abi,我们可以查看可以使用的操作的列表,和特定的消息结构。$ ./eosc get code -a currency.abi currency
code hash: a1c8c84b4700c09c8edb83522237439e33cf011a4d7ace51075998bd002e04c9
saving abi to currency.abi




$ cat currency.abi
{
"types": [{
"newTypeName": "AccountName",
"type": "Name"
}
],
"structs": [{
"name": "transfer",
"base": "",
"fields": {
"from": "AccountName",
"to": "AccountName",
"amount": "UInt64"
}
},{
"name": "account",
"base": "",
"fields": {
"account": "Name",
"balance": "UInt64"
}
}
],
"actions": [{
"action": "transfer",
"type": "transfer"
}
],
"tables": [{
"table": "account",
"indextype": "i64",
"keynames": [
"account"
],
"keytype": ,
"type": "account"
}
]





通过上面的abi我们可以看到currency合约接受一个叫transfer的操作,可以接收from,to,和amount的消息。$ ./eosc push message currency transfer '{"from":"currency","to":"tester","amount":50}'-S currency -S tester -p currency@active
1900201ms thread-0 main.cpp:841 operator() ] Converting argument to binary...
{
"transaction_id": "ca09079cf2bf3119936302f328229dac62d606f764beb5fb98d9662a9cc4364f",
"processed": {
"refBlockNum": 5934,
"refBlockPrefix": 1385229449,
"expiration": "2017-09-19T07:31:39",
"scope": [
"currency",
"tester"
],
"signatures": [
"1f519783cbf870fa3587f285ec8291a1797767b81f045cdc329e44e849dda09bbb07675dd74fc8a94cb9b2290e27bdd9d7da8c76a5dbec3bbd252d13b82f111213"
],
"messages": [{
"code": "currency",
"type": "transfer",
"authorization": [{
"account": "currency",
"permission": "active"
}
],
"data": {
"from": "currency",
"to": "tester",
"amount": 50
},
"hex_data": "00000079b822651d00000000c84267a13200000000000000"
}
],
"output": [{
"notify": [{
"name": "tester",
"output": {
"notify": [],
"deferred_transactions":
}
}
],
"deferred_transactions":
}
]
}
}





现在我们可以通过tester账户给inita转账了,这需要tester的权限。这样会把tester的账户余额减为0.$ ./eosc push message currency transfer '{"from":"tester","to":"inita","amount":50}' -S inita -S tester -p tester@active
2123324ms thread-0 main.cpp:841 operator() ] Converting argument to binary...
{
"transaction_id": "deddce1b35d08d905db8a30d9329280914476b3bbd715e68d2f4de57cc2d87a2",
"processed": {
"refBlockNum": 6008,
"refBlockPrefix": 1583570563,
"expiration": "2017-09-19T07:35:21",
"scope": [
"inita",
"tester"
],
"signatures": [
"2078629ee49addd2c85625110ad11504f923ff6d4aff275b47bd676e60d8692cd8340197d983fe1bfa94739101a396bb44edb76a46cdd763461c2b9a76fa423983"
],
"messages": [{
"code": "currency",
"type": "transfer",
"authorization": [{
"account": "tester",
"permission": "active"
}
],
"data": {
"from": "tester",
"to": "inita",
"amount": 50
},
"hex_data": "00000000c84267a1000000008040934b3200000000000000"
}
],
"output": [{
"notify": [{
"name": "inita",
"output": {
"notify": [],
"deferred_transactions":
}
},{
"name": "tester",
"output": {
"notify": ,
"deferred_transactions":
}
}
],
"deferred_transactions":
}
]
}
}





现在tester的余额为0,如果你再次尝试转账,将会失败。$ ./eosc push message currency transfer '{"from":"tester","to":"inita","amount":50}' -S inita -S tester -p tester@active
3543610ms thread-0 main.cpp:271 operator() ] Converting argument to binary...
3543615ms thread-0 main.cpp:311 main ] Failed with error: 10 assert_exception: Assert Exception
status_code == 200: Error
: 10 assert_exception: Assert Exception
test: assertion failed: integer underflow subtracting token balance
{"s":"integer underflow subtracting token balance","ptr":176}
thread-1 wasm_interface.cpp:248 assertnonei32i32
[...snipped...]
查询合约
 
在执行完货币合约的操作后,我们可以通过查看货币账户表来验证每个帐户持有的代币数量。
此表存储在每个帐户的范围内,而不是在currency账户范围内。$ ./eosc get table tester currency account
{
"rows": ,
"more": true
}




./eosc get table inita currency account
{
"rows": [{
"account": "account",
"balance": 100
}
],
"more": true
}





 
 
 
连接特定节点。
缺省设置中,eosc将会连接跑在本地端口8888的节点。你可以通过指定主机地址和端口来连接另外一个eosd节点。
 
 
使用单独的钱包应用程序
除了使用eosd中内置的钱包功能,你可以使用一个独立的钱包应用程序,在programs/eos-walletd文件夹里可以找到。缺省设置中,8888端口被eosd占用了,因此选择其它端口。./eos-walletd --http-server-endpoint 127.0.0.1:8887





3354954ms thread-0   wallet_plugin.cpp:30          plugin_initialize    ] initializing wallet plugin
3354966ms thread-0   http_plugin.cpp:132           plugin_initialize    ] host: 127.0.0.1 port: 8887 
3354967ms thread-0   http_plugin.cpp:135           plugin_initialize    ] configured http to listen on 127.0.0.1:8887
3354968ms thread-0   http_plugin.cpp:147           plugin_startup       ] start processing http thread
3354980ms thread-0   http_plugin.cpp:195           plugin_startup       ] start listening for http requests
3355005ms thread-0   http_plugin.cpp:200           plugin_startup       ] http io service exit
3355005ms thread-0   wallet_api_plugin.cpp:64      plugin_startup       ] starting wallet_api_plugin
3355006ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/create
3355006ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/get_public_keys
3355006ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/import_key
3355006ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/list_keys
3355006ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/list_wallets
3355006ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/lock
3355006ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/lock_all
3355007ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/open
3355007ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/set_timeout
3355007ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/sign_transaction
3355007ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/unlock






之后任何操作都需要签名,使用-wallet-host和-wallet-port 选项。./eosc --wallet-host 127.0.0.1 --wallet-port 8887 <COMMAND> <SUBCOMMAND> <PARAMS>





 
 跳过签名部分
 对于开发者有个简单的方法来测试各项功能,eosd可以运行但不处理私钥签名,这样交易签名就不需要了。./eosd --skip-transaction-signatures
之后任何需要签名的操作,需要使用-s选项。./eosc <COMMAND> <SUBCOMMAND> -s <PARAMS>




 
 

附加文档
eosc里面包含了所有命令的文档,简单的运行不带参数的命令,就可以得到eosc的全部命令列表。$ ./eosc
ERROR: RequiredError: Subcommand required
Command Line Interface to Eos Daemon
Usage: ./eosc [OPTIONS] SUBCOMMAND

Options:
-h,--help Print this help message and exit
-H,--host TEXT=localhost the host where eosd is running
-p,--port UINT=8888 the port where eosd is running
--wallet-host TEXT=localhost
the host where eos-walletd is running
--wallet-port UINT=8888 the port where eos-walletd is running
-v,--verbose output verbose messages on error

Subcommands:
create Create various items, on and off the blockchain
get Retrieve various items and information from the blockchain
set Set or update blockchain state
transfer Transfer EOS from account to account
wallet Interact with local wallet
benchmark Configure and execute benchmarks
push Push arbitrary transactions to the blockchain
ubuntu@ubuntu:~/eos/build/programs/eosc$





为了得到任何特定的子命令的帮助,同样使用不带参数运行的方法。$ ./eosc create
ERROR: RequiredError: Subcommand required
Create various items, on and off the blockchain
Usage: ./eosc create SUBCOMMAND

Subcommands:
key Create a new keypair and print the public and private keys
account Create a new account on the blockchain
producer Create a new producer on the blockchain
ubuntu@ubuntu:~/eos/build/programs/eosc$





 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  查看全部
大家好,EOS发布了DAWN1.0版本,我按照官方的文档安装做了下测试,分享给大家,我建了一个EOS的中文爱好者社区,欢迎各位EOS爱好者来这里讨论EOS www.eos.top
 

 内容介绍
  1. EOSC介绍
  2. 创建钱包
  3. 将私钥导入到钱包
  4. 锁定和解锁钱包
  5. 打开钱包
  6. 创建账户
  7. 转账
  8. 获取交易信息
  9. 创建一个合约
  10. 向合约推送消息。
  11. 查询合约
  12. 链接特定的节点。
  13. 使用单独的钱包应用程序。
  14. 跳过签名部分。
  15. 附加文档。

 
EOSC钱包介绍
 
eosc是一个和eosd暴露的REST api交互的命令行工具。为了eosc的正常使用,你需要在本地运行一个eosd的副本并在配置文件config.ini中载入'plugin = eos::chain_api_plugin'。为了签署交易并推送到区块链中,你需要载入‘plugin = eos::wallet_api_plugin’。为了查询账户的交易和历史记录,你需要载入 'eos::account_history_api_plugin' 。
# Plugin(s) to enable, may be specified multiple times
plugin = eos::producer_plugin
plugin = eos::chain_api_plugin
plugin = eos::wallet_api_plugin
plugin = eos::account_history_api_plugin
当你启动eosd后,你应该可以查询当前的区块链状态
$ ./eosc get info
{
"head_block_num": 1635,
"last_irreversible_block_num": 1618,
"head_block_id": "000006638f62a7a03a2d9140d2c9889c148bb62a2c9f6f5efd12d364b1fa5f60",
"head_block_time": "2017-09-19T03:56:24",
"head_block_producer": "initj",
"recent_slots": "0000000000000000000000000000000000000000000000000000000000001111",
"participation_rate": "0.06250000000000000"
}





 
创建钱包
 
任何发送到区块链的交易都需要用所有者各自的私钥进行签名。在你签名交易之前,你需要一个钱包来储存和管理私钥。
$ ./eosc wallet create
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5JD9cw9YY288AXPvnbwUk5JK4Cy6YyZ83wzHcshu8F2akU9rRWE
这将在eos-walletd中创建一个名为‘default’的钱包,并返回钱包密码,请将钱包密码保存好,以后可以用来解锁钱包。
 
你可以指定名称来创建多个不同的钱包。
$ ./eosc wallet create -n zhenghao
Creating wallet: zhenghao
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5KjS8oPZnfXZeE4RmYnWGfegKa5vHH2zZkaEC7Jms7L1xSmb7v1"





以上命令创建了名称为‘zhenghao’的钱包,你也可以查看你的钱包列表。
$ ./eosc wallet list
Wallets:
[
"default *",
"zhenghao *"
]






注意,如果你没有指定特定的钱包名称,对于钱包的任何操作都都归于‘default’默认钱包。
 


 
将私钥导入钱包
 
将私钥导入你想用来签名的钱包中。下面将会导入创世账户(比如,inita,initb,initc,...,initu),在config.ini中。
$ ./eosc wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
imported private key for: EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV




你之后可以看到导入的私钥和对应的公钥。
$ ./eosc wallet keys
[[
"EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
"5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"
]
]

 
 锁定和解锁钱包
 
为了保证你的私钥安全,锁定你的钱包。
~/eos/build/programs/eosc$ ./eosc wallet lock -n zhenghao
Locked: 'zhenghao'

~/eos/build/programs/eosc$ ./eosc wallet lock
Locked: 'default'
使用你刚才创建钱包时生成的特定的密钥来解锁钱包。
$ ./eosc wallet unlock -n zhenghao --password PW5KjS8oPZnfXZeE4RmYnWGfegKa5vHH2zZkaEC7Jms7L1xSmb7v1
Unlocked: 'zhenghao'

$./eosc wallet unlock --password PW5JPrtWhD686dktsNHe6XfnxudY7fJVVb5fDVsFuigkuBzXGhrpJ
Unlocked: 'default'

这时你就可以在列表中看到你的钱包了
$ ./eosc wallet list
Wallets:
[
"default *",
"zhenghao *"
]






注意,钱包默认处于关闭状态。


 
创建一个账户
 
为了创建一个账户,你需要使用两个密钥:owner和active。你可以使用eosc来创建一些密钥对。
 
这将是你的owner key.
$ ./eosc create key
Private key: 5KELdbfiBrFaix5K8ZEArCGjfQkGgyXqziTdqGcv5koR8faPybj
Public key: EOS6NpEqWi177VKQkuJQL9V6Y3LqAAp9C2jDsAagMW4uELw72Z2oP
这将是你的active key。
./eosc create key
Private key: 5KdEcZfHat6DR4hAK1XYZ76hBR93riRz3HpKZrk3yN5a99uZvu4
Public key: EOS5V8geYBkAEtCcs5TMgMsWJqsRk5CMyh5jCvPxbGtGDfnnSXjqP


注意,eosc不会保存生成的私钥。


 
 
接下来我们创建一个名称为tester的账号,但因为所有的账户都需要用已有账户来创建,我们将使用inita账户的owener key和active key来创建tester,inita由创世文件来规定。
为了使用inita来推送交易,你首先要导入inita的私钥到你的钱包。(参见将私钥导入钱包
那么我们来创建一个名为tester的账户。
$ ./eosc create account inita tester EOS6NpEqWi177VKQkuJQL9V6Y3LqAAp9C2jDsAagMW4uELw72Z2oP  EOS5V8geYBkAEtCcs5TMgMsWJqsRk5CMyh5jCvPxbGtGDfnnSXjqP
{
"transaction_id": "4bdb92e134342df2ecf33e87120b80da4c1e0ff621e6e4b92ff78aa37b85204c",
"processed": {
"refBlockNum": 4844,
"refBlockPrefix": 3320117640,
"expiration": "2017-09-19T06:37:06",
"scope": [
"eos",
"inita"
],
"signatures": [
"1f28c6969974f32810a35f4fe8e007f848fe86c2b15950ba65095c13bd50a9cbe966e5cd855d4ece025a84bfc2960554b8780cd9b844cd27ff53c193abad803629"
],
"messages": [{
"code": "eos",
"type": "newaccount",
"authorization": [{
"account": "inita",
"permission": "active"
}
],
"data": {
"creator": "inita",
"name": "tester",
"owner": {
"threshold": 1,
"keys": [{
"key": "EOS6NpEqWi177VKQkuJQL9V6Y3LqAAp9C2jDsAagMW4uELw72Z2oP",
"weight": 1
}
],
"accounts":
},
"active": {
"threshold": 1,
"keys": [{
"key": "EOS5V8geYBkAEtCcs5TMgMsWJqsRk5CMyh5jCvPxbGtGDfnnSXjqP",
"weight": 1
}
],
"accounts":
},
"recovery": {
"threshold": 1,
"keys": ,
"accounts": [{
"permission": {
"account": "inita",
"permission": "active"
},
"weight": 1
}
]
},
"deposit": "0.0001 EOS"
},
"hex_data": "000000008040934b00000000004067a1010000000102c4034b92a688a8ee82f57f4406c927f48957cc81b705117522613f38a63b53310100000100000001024ea9a0b042693d858ef159eaf32a91afdb9ac16bfa2c29ad33e5a3c14f045727010000010000000001000000008040934b00000000149be8080100010000000000000004454f5300000000"
}
],
"output": [{
"notify": [],
"deferred_transactions":
}
]
}
}





现在你可以看到tester是inita的一个controlled_account。
$ ./eosc get servants inita
{
"controlled_accounts": [
"tester"
]
}

 
转账
在创建账户之后,我们可以查看当前账户的状态。
$ ./eosc get account tester
{
"name": "tester",
"eos_balance": 0,
"staked_balance": 1,
"unstaking_balance": 0,
"last_unstaking_time": "1969-12-31T23:59:59",
"permissions": [{
"name": "active",
"parent": "owner",
"required_auth": {
"threshold": 1,
"keys": [{
"key": "EOS7d9A3uLe6As66jzN8j44TXJUqJSK3bFjjEEqR4oTvNAB3iM9SA",
"weight": 1
}
],
"accounts":
}
},{
"name": "owner",
"parent": "owner",
"required_auth": {
"threshold": 1,
"keys": [{
"key": "EOS4toFS3YXEQCkuuw1aqDLrtHim86Gz9u3hBdcBw5KNPZcursVHq",
"weight": 1
}
],
"accounts":
}
}
]
}

你会注意到账号余额为零,因为所有的EOS代币当前都分配给了eos账户和创世账户。
$ ./eosc get account eos
{
"name": "eos",
"eos_balance": "69000000.0000 EOS",
"staked_balance": "0.0000 EOS",
"unstaking_balance": "0.0000 EOS",
"last_unstaking_time": "1969-12-31T23:59:59",
"permissions":
}





既然我们有创世账户(比如inita,initb,initc等)的私钥,我们就可以通过任一创世账户使用eosc的以下命令行给tester账户充值。
$ ./eosc transfer inita tester 1000
{
"transaction_id": "311ae5affaed2ba943e041dd52000557b3ac9aeda5c80c4ae8cf9156fefe505d",
"processed": {
"refBlockNum": 5104,
"refBlockPrefix": 2510363935,
"expiration": "2017-09-19T06:50:06",
"scope": [
"inita",
"tester"
],
"signatures": [
"1f1b08a06383e1b06fe9298437022abce7ccf362ed6df9438f619c65f3c130c7766aa83d8689fcc16a36c25f7318471a378a42882728112ebb1b010636d156f0db"
],
"messages": [{
"code": "eos",
"type": "transfer",
"authorization": [{
"account": "inita",
"permission": "active"
}
],
"data": {
"from": "inita",
"to": "tester",
"amount": 1000,
"memo": ""
},
"hex_data": "000000008040934b00000000c84267a1e80300000000000000"
}
],
"output": [{
"notify": [{
"name": "tester",
"output": {
"notify": [],
"deferred_transactions":
}
},{
"name": "inita",
"output": {
"notify": ,
"deferred_transactions":
}
}
],
"deferred_transactions":
}
]
}
}





 
现在我们可以验证我们收到的资产。
$ ./eosc get account tester
{
"name": "tester",
"eos_balance": "0.1000 EOS",
"staked_balance": "0.0001 EOS",
"unstaking_balance": "0.0000 EOS",
"last_unstaking_time": "1969-12-31T23:59:59",
"permissions": [{
"name": "active",
"parent": "owner",
"required_auth": {
"threshold": 1,
"keys": [{
"key": "EOS7d9A3uLe6As66jzN8j44TXJUqJSK3bFjjEEqR4oTvNAB3iM9SA",
"weight": 1
}
],
"accounts":
}
},{
"name": "owner",
"parent": "owner",
"required_auth": {
"threshold": 1,
"keys": [{
"key": "EOS4toFS3YXEQCkuuw1aqDLrtHim86Gz9u3hBdcBw5KNPZcursVHq",
"weight": 1
}
],
"accounts":
}
}
]
}





 
获取交易信息
 
使用account_history_api_plugin,我们可以查询特定的交易。
$ ./eosc get transaction eb4b94b72718a369af09eb2e7885b3f494dd1d8a20278a6634611d5edd76b703
{
"transaction_id": "eb4b94b72718a369af09eb2e7885b3f494dd1d8a20278a6634611d5edd76b703",
"processed": {
"refBlockNum": 2206,
"refBlockPrefix": 221394282,
"expiration": "2017-09-05T08:03:58",
"scope": [
"inita",
"tester"
],
"signatures": [
"1f22e64240e1e479eee6ccbbd79a29f1a6eb6020384b4cca1a958e7c708d3e562009ae6e60afac96f9a3b89d729a50cd5a7b5a7a647540ba1678831bf970e83312"
],
"messages": [{
"code": "eos",
"type": "transfer",
"authorization": [{
"account": "inita",
"permission": "active"
}
],
"data": {
"from": "inita",
"to": "tester",
"amount": 1000,
"memo": ""
},
"hex_data": "000000008040934b00000000c84267a1e80300000000000000"
}
],
"output": [{
"notify": [{
"name": "tester",
"output": {
"notify": [],
"sync_transactions": ,
"async_transactions":
}
},{
"name": "inita",
"output": {
"notify": ,
"sync_transactions": ,
"async_transactions":
}
}
],
"sync_transactions": ,
"async_transactions":
}
]
}
}

同样我们可以查询一个特定账户重开始到最近一次的交易记录。
$ ./eosc get transactions inita
[
{
"transaction_id": "eb4b94b72718a369af09eb2e7885b3f494dd1d8a20278a6634611d5edd76b703",
...
},
{
"transaction_id": "6acd2ece68c4b86c1fa209c3989235063384020781f2c67bbb80bc8d540ca120",
...
},
...
]

 
创建智能合约
 
在这一部分我们将使用eosc来创建一个并发布一个货币合约。你可以在eos/contracts/currency 文件夹中找到货币合约的例子。
第一步为货币来创建一个账户。我们将使用inita来创建一个currency账户。请确认你的inita的私钥已导入。
$ ./eosc create account inita currency EOS6NpEqWi177VKQkuJQL9V6Y3LqAAp9C2jDsAagMW4uELw72Z2oP  EOS5V8geYBkAEtCcs5TMgMsWJqsRk5CMyh5jCvPxbGtGDfnnSXjqP
{
"transaction_id": "7ec42f095b2c39f9b854ec2262cec949f7107051dbc5fdd68d6776091f5567db",
"processed": {
"refBlockNum": 5460,
"refBlockPrefix": 3499954811,
"expiration": "2017-09-19T07:07:57",
"scope": [
"eos",
"inita"
],
"signatures": [
"1f5a82513f293e1a053ebda13718ffc40dd0d81876ebf5302665083d1f0c261c0623b37480459cbd3b49d03ed7d50456f0d8bb665c2dc43914192f30e1e13bb9a4"
],
"messages": [{
"code": "eos",
"type": "newaccount",
"authorization": [{
"account": "inita",
"permission": "active"
}
],
"data": {
"creator": "inita",
"name": "currency",
"owner": {
"threshold": 1,
"keys": [{
"key": "EOS6NpEqWi177VKQkuJQL9V6Y3LqAAp9C2jDsAagMW4uELw72Z2oP",
"weight": 1
}
],
"accounts":
},
"active": {
"threshold": 1,
"keys": [{
"key": "EOS5V8geYBkAEtCcs5TMgMsWJqsRk5CMyh5jCvPxbGtGDfnnSXjqP",
"weight": 1
}
],
"accounts":
},
"recovery": {
"threshold": 1,
"keys": ,
"accounts": [{
"permission": {
"account": "inita",
"permission": "active"
},
"weight": 1
}
]
},
"deposit": "0.0001 EOS"
},
"hex_data": "000000008040934b00000079b822651d010000000102c4034b92a688a8ee82f57f4406c927f48957cc81b705117522613f38a63b53310100000100000001024ea9a0b042693d858ef159eaf32a91afdb9ac16bfa2c29ad33e5a3c14f045727010000010000000001000000008040934b00000000149be8080100010000000000000004454f5300000000"
}
],
"output": [{
"notify": [],
"deferred_transactions":
}
]
}
}





 
下一步是发布合约(.wast)和他的abi(.abi)
我们需要将currency的active key导入到钱包中。
$ ./eosc wallet import 5Hv22aPcjnENBv6X9o9nKGdkfrW44En6z4zJUt2PobAvbQXrT9z
imported private key for: EOS7d9A3uLe6As66jzN8j44TXJUqJSK3bFjjEEqR4oTvNAB3iM9SA




之后继续设置代码。
./eosc set contract currency /.../.../eos/build/contracts/currency/currency.wast /.../.../eos/build/contracts/currency/currency.abi
Reading WAST...
Assembling WASM...
Publishing contract...
{
"transaction_id": "a7591a16f902b4c595b8ffbb220f588abd0172897c40fa689b9133dca3dd2bfc",
"processed": {
"refBlockNum": 5668,
"refBlockPrefix": 502401204,
"expiration": "2017-09-19T07:18:21",
"scope": [
"currency",
"eos"
],
"signatures": [
"1f581f8d46798049648f21bdd7c74c1117813754bb3cf6d3152b0a5da9ca5a269b7d0b2875a5ef94a62bd9ee69fe7bfd84435819b9bf1a7d77e6dd32876d2defca"
],
"messages": [{
"code": "eos",
"type": "setcode",
"authorization": [{
"account": "currency",
"permission": "active"
}
],
"data": "00000079b8......636f756e74"
}
],
"output": [{
"notify": [],
"deferred_transactions":
}
]
}
}





向合约推送消息
 
在合约发布之后,所有的货币初始会分配给currency账户。因此让我们转给tester一些。
 
我们可以区块链合约的.abi,我们可以查看可以使用的操作的列表,和特定的消息结构。
$ ./eosc get code -a currency.abi currency
code hash: a1c8c84b4700c09c8edb83522237439e33cf011a4d7ace51075998bd002e04c9
saving abi to currency.abi




$ cat currency.abi
{
"types": [{
"newTypeName": "AccountName",
"type": "Name"
}
],
"structs": [{
"name": "transfer",
"base": "",
"fields": {
"from": "AccountName",
"to": "AccountName",
"amount": "UInt64"
}
},{
"name": "account",
"base": "",
"fields": {
"account": "Name",
"balance": "UInt64"
}
}
],
"actions": [{
"action": "transfer",
"type": "transfer"
}
],
"tables": [{
"table": "account",
"indextype": "i64",
"keynames": [
"account"
],
"keytype": ,
"type": "account"
}
]





通过上面的abi我们可以看到currency合约接受一个叫transfer的操作,可以接收from,to,和amount的消息。
$  ./eosc push message currency transfer '{"from":"currency","to":"tester","amount":50}'-S currency -S tester -p currency@active
1900201ms thread-0 main.cpp:841 operator() ] Converting argument to binary...
{
"transaction_id": "ca09079cf2bf3119936302f328229dac62d606f764beb5fb98d9662a9cc4364f",
"processed": {
"refBlockNum": 5934,
"refBlockPrefix": 1385229449,
"expiration": "2017-09-19T07:31:39",
"scope": [
"currency",
"tester"
],
"signatures": [
"1f519783cbf870fa3587f285ec8291a1797767b81f045cdc329e44e849dda09bbb07675dd74fc8a94cb9b2290e27bdd9d7da8c76a5dbec3bbd252d13b82f111213"
],
"messages": [{
"code": "currency",
"type": "transfer",
"authorization": [{
"account": "currency",
"permission": "active"
}
],
"data": {
"from": "currency",
"to": "tester",
"amount": 50
},
"hex_data": "00000079b822651d00000000c84267a13200000000000000"
}
],
"output": [{
"notify": [{
"name": "tester",
"output": {
"notify": [],
"deferred_transactions":
}
}
],
"deferred_transactions":
}
]
}
}





现在我们可以通过tester账户给inita转账了,这需要tester的权限。这样会把tester的账户余额减为0.
$ ./eosc push message currency transfer '{"from":"tester","to":"inita","amount":50}' -S inita -S tester -p tester@active
2123324ms thread-0 main.cpp:841 operator() ] Converting argument to binary...
{
"transaction_id": "deddce1b35d08d905db8a30d9329280914476b3bbd715e68d2f4de57cc2d87a2",
"processed": {
"refBlockNum": 6008,
"refBlockPrefix": 1583570563,
"expiration": "2017-09-19T07:35:21",
"scope": [
"inita",
"tester"
],
"signatures": [
"2078629ee49addd2c85625110ad11504f923ff6d4aff275b47bd676e60d8692cd8340197d983fe1bfa94739101a396bb44edb76a46cdd763461c2b9a76fa423983"
],
"messages": [{
"code": "currency",
"type": "transfer",
"authorization": [{
"account": "tester",
"permission": "active"
}
],
"data": {
"from": "tester",
"to": "inita",
"amount": 50
},
"hex_data": "00000000c84267a1000000008040934b3200000000000000"
}
],
"output": [{
"notify": [{
"name": "inita",
"output": {
"notify": [],
"deferred_transactions":
}
},{
"name": "tester",
"output": {
"notify": ,
"deferred_transactions":
}
}
],
"deferred_transactions":
}
]
}
}





现在tester的余额为0,如果你再次尝试转账,将会失败。
$ ./eosc push message currency transfer '{"from":"tester","to":"inita","amount":50}' -S inita -S tester -p tester@active
3543610ms thread-0 main.cpp:271 operator() ] Converting argument to binary...
3543615ms thread-0 main.cpp:311 main ] Failed with error: 10 assert_exception: Assert Exception
status_code == 200: Error
: 10 assert_exception: Assert Exception
test: assertion failed: integer underflow subtracting token balance
{"s":"integer underflow subtracting token balance","ptr":176}
thread-1 wasm_interface.cpp:248 assertnonei32i32
[...snipped...]

查询合约
 
在执行完货币合约的操作后,我们可以通过查看货币账户表来验证每个帐户持有的代币数量。
此表存储在每个帐户的范围内,而不是在currency账户范围内。
$ ./eosc get table tester currency account
{
"rows": ,
"more": true
}




 ./eosc get table inita currency account
{
"rows": [{
"account": "account",
"balance": 100
}
],
"more": true
}





 
 
 
连接特定节点。
缺省设置中,eosc将会连接跑在本地端口8888的节点。你可以通过指定主机地址和端口来连接另外一个eosd节点。
 
 
使用单独的钱包应用程序
除了使用eosd中内置的钱包功能,你可以使用一个独立的钱包应用程序,在programs/eos-walletd文件夹里可以找到。缺省设置中,8888端口被eosd占用了,因此选择其它端口。
./eos-walletd --http-server-endpoint 127.0.0.1:8887





3354954ms thread-0   wallet_plugin.cpp:30          plugin_initialize    ] initializing wallet plugin
3354966ms thread-0   http_plugin.cpp:132           plugin_initialize    ] host: 127.0.0.1 port: 8887 
3354967ms thread-0   http_plugin.cpp:135           plugin_initialize    ] configured http to listen on 127.0.0.1:8887
3354968ms thread-0   http_plugin.cpp:147           plugin_startup       ] start processing http thread
3354980ms thread-0   http_plugin.cpp:195           plugin_startup       ] start listening for http requests
3355005ms thread-0   http_plugin.cpp:200           plugin_startup       ] http io service exit
3355005ms thread-0   wallet_api_plugin.cpp:64      plugin_startup       ] starting wallet_api_plugin
3355006ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/create
3355006ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/get_public_keys
3355006ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/import_key
3355006ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/list_keys
3355006ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/list_wallets
3355006ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/lock
3355006ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/lock_all
3355007ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/open
3355007ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/set_timeout
3355007ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/sign_transaction
3355007ms thread-0   http_plugin.cpp:224           add_handler          ] add api url: /v1/wallet/unlock






之后任何操作都需要签名,使用-wallet-host和-wallet-port 选项。
./eosc --wallet-host 127.0.0.1 --wallet-port 8887 <COMMAND> <SUBCOMMAND> <PARAMS>





 
 跳过签名部分
 对于开发者有个简单的方法来测试各项功能,eosd可以运行但不处理私钥签名,这样交易签名就不需要了。
./eosd --skip-transaction-signatures

之后任何需要签名的操作,需要使用-s选项。
./eosc <COMMAND> <SUBCOMMAND> -s <PARAMS>




 
 

附加文档
eosc里面包含了所有命令的文档,简单的运行不带参数的命令,就可以得到eosc的全部命令列表。
$ ./eosc
ERROR: RequiredError: Subcommand required
Command Line Interface to Eos Daemon
Usage: ./eosc [OPTIONS] SUBCOMMAND

Options:
-h,--help Print this help message and exit
-H,--host TEXT=localhost the host where eosd is running
-p,--port UINT=8888 the port where eosd is running
--wallet-host TEXT=localhost
the host where eos-walletd is running
--wallet-port UINT=8888 the port where eos-walletd is running
-v,--verbose output verbose messages on error

Subcommands:
create Create various items, on and off the blockchain
get Retrieve various items and information from the blockchain
set Set or update blockchain state
transfer Transfer EOS from account to account
wallet Interact with local wallet
benchmark Configure and execute benchmarks
push Push arbitrary transactions to the blockchain
ubuntu@ubuntu:~/eos/build/programs/eosc$





为了得到任何特定的子命令的帮助,同样使用不带参数运行的方法。
$ ./eosc create
ERROR: RequiredError: Subcommand required
Create various items, on and off the blockchain
Usage: ./eosc create SUBCOMMAND

Subcommands:
key Create a new keypair and print the public and private keys
account Create a new account on the blockchain
producer Create a new producer on the blockchain
ubuntu@ubuntu:~/eos/build/programs/eosc$





 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

月23日bm接受EpiCenter采访视频

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

视频链接
 
  查看全部
视频链接
 
 


关于Daniel Larimer 的一些区块链行业贡献

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

翻译原文链接:https://steemit.com/eosio/%40x ... ustry 

2016年,bm和ned scott一起创办了steem,一个基于石墨烯的区块链社交平台。由ned担任ceo,而bm专注于他的长项:技术。在几个月内就开发并发布了功能完整的区块链。它开发了一个工作网站,并开始挖代币steem,代币的生成算法是一种新的只支持cpu的pow挖矿算法。

steem在bitcointalk.org上发了一篇帖子,宣告steem的诞生,同时大家都能开始挖steem。然而当时steem的概念还比较新,很少有人有兴趣去挖steem,于是steemit自己在第一周的时候挖了steem总量的80%;然而,随着新矿工的加入,这个比例开始下降。最开始挖到的steem,被用于支付给投票人,发帖的人,以及其它用户,由此推动了steem社区的发展。steem也解决了新用户的交易成本的问题,他们给每个新用户五美元的steem,这样新用户就能读文章,投票,写文章;这样,新用户就能与应用进行交互而不需要支付初始的费用。到目前为止,steem上的交易都不需要任何网络手续费。这要归功于比例限制交易(rate-limited transaction)的发明,这种方式通过限制带宽来防止spam攻击,而不是通过收手续费来防止spam攻击。

在6个月内,由于通胀,steemit持有的steem已经少于50%,而通胀产生的steem被支付给了矿工,区块生产者,投票者,以及发文的人,但是,steemit仍然拥有多数的steem,能支持开发工作。有些人认为steem是不可持续的,但是,bm说“steemit的资金很充足,它可以吧自己手上的steem卖掉,来筹集开发资金“。
bm一直都想开发一种能并行处理的通用的智能合约区块链,它能向应用和用户提供无手续费的服务,以及plasma那样的功能。为了追求这个愿景,bm和scott以及steemit友好分手,现在,bm已不是steemit的股东了。
为了消除那些认为bm抛弃了steem,与steeim不欢而散的谣言,在2017年4月13日,steem和bm发表了联合声明:

2017年3月14日,bm辞去Steemit, Inc的 CTO一职。Steemit, Inc与bm的合作一向愉快,没有任何争执。Steemit, Inc.与bm都会继续为区块链以及数字货币社区服务,创造价值。Steemit, Inc.感谢bm的付出,bm祝愿steemit的成员,社区成员在steem区块链,steeimt社交平台的发展中继续成功。

EOS
最近,关于EOS的文章已经很多了。有些是谈技术的,有些是谈block.one的,有些是谈投资/交易机会的。由于我是一名工程师,我主要的兴趣是技术,所以,我只会去谈谈EOS软件的细节,以及一些架构的细节。不过,要记住的是,目前EOS软件还没到能使用的状态。

Block.one
目前为止,block.one,运行EOS区块链—一种新的区块链操作系统,用于支持商业级去中心化应用 —  的软件的开发者。

成功的背后是什么?
一方面,是block.one团队看上去拥有一支经验丰富的管理团队,同时得到了区块链行业与金融行业的顶尖投资者和顾问的支持。另一方面,是它的著名成员:bm,CTO,区块链行业的老兵,bitshares和steem的创始人。

软件
EOS将是bm在4年内的第四个公共区块链平台,我个人认为bm毫无疑问会成功。想深入研究这个软件的人,可以在github上查看它的代码。
bm和block.one现在正在开发一种新的区块链软件,他们称之为EOS.IO。在2017共识大会的展示会上,block.one声称他们的软件功能非常厉害,这些功能包括:

1 通过并行处理从而水平拓展的能力
2 没有交易手续费
3 去中心化治理

有些人质疑这个软件是否真的能运转起来,但是bm其实已经创建过实现这项功能的区块链。
Ian Grigg,是一位受人尊敬的金融加密学者,Ricardian 合约的发明者,三重记账法的发明者,同时,他也是block.one的顾问,合伙人,他说:

目前,区块链上其实并没有什么真正有用的应用。bitshares是一款成功的区块链应用。steem是第一个成功的面向终端用户的分布式应用—它是在区块链之上的应用,但是你并不感觉到你是在区块链上。用户并不需要知道也不需要关心。steem打开了把社交媒体当作潜在的dapp的大门。steem的意义在于,你可以在区块链上开发任何社交网络,你可以开发facebook,你可以开发twitter。steem的意义在于我们现在在数字货币领域终于有了真正的应用,这是非常了不起的。

block.one承诺,EOS会是完全透明的。从7月1日开始EOS的代码就已经上传到github上了,任何人都能查看和审核。bm同时继续在steem和其它社交媒体上发布软件的开发进度。block.one还承诺,EOS将会在开发结束后,基于开源证书发布。
大众对EOS.IO技术白皮书的反馈和评论也可以在github上查看(网址: d)[/url] 

bm告诉我:

EOS.IO计划通过把每个合约(应用)在它自己的线程内使用私有数据运行,来达到拓展性能的目的。应用间通过异步通讯进行沟通。这是一种很著名的设计模式,它与以太坊的分片模式的设计理念有相似之处。EOS.IO只是把每个应用置于它自己的分片上。

这对我这个工程师来说,是一种稳妥的办法。
EOS使用WebAssembly语言,这能让开发者使用多种不同的语言来开发他们的应用,包括c,c++,以及rust。bm说,早期的测试表明,目前用c++写的,用WebAssembly运行的简单合约,性能能达到80000tps,而使用Solidity的话,性能只能达到5000tps左右。
以太坊企业联盟(EEA)最近也公布了一份愿景(网址: https://www.infoq.com/news/201 ... Vision)以太坊目前正在寻找pow的替代算法,来提高拓展性,减少计算成本。EEA正在评估多种方法,这些方法可能就是将来以太坊区块共识协议的基石,包括bm的dpos算法也在评估之列。
bm说EOS只是基于他以前开发过的技术和平台,这些技术和平台让他之前的区块链项目成功了。

去中心化
人们对bm的一个未证实的批评是,bm的项目不是去中心化的;虽然,bitshares和steem都是没有中央权威机构或服务器的。steem上的每笔交易都会在45秒内由21个单独的个体中的15个确认(在bitshares中则是2/3的个体),bm说其它平台则需要6个矿池中的4个在6小时内确认。bm认为比特币和以太坊的机制其实是dpow(Delegated Proof of Work),因为那部分生产区块的矿池其实是由矿工们选举出来的。比特币矿池现在的情况还不错,但是几年前,我们知道,一到两个大矿池垄断了比特币网络哈希算力的大头。DPOS对我来说仍然是天书一样。不过,它减少了随机性和变动性的负担,以前区块生产者都需要苦苦解决这两个问题。

在EOS中,区块生产者由代币持有人选举产生,但是,与其它平台不同的是,EOS的治理模式是,用户可以约束住区块生产者,检查他们是不是生产了空区块,或者有其他伤害社区的行为。这样一来,区块生产者的利益和用户的利益就能保持一致,而不像其他使用pow的平台那样,控制平台的人和拥有代币的人不是一群人。bm说,EOS的初衷是运行在全球的多个数据中心上,这样能极大地提高去中心化的机会。这样的话,或许会给那些想通过付费成为区块生产者的人设置了门槛,不过,最终可靠的数据中心的数量会比可靠的挖矿数据中心数量多得多。挖矿能不能盈利强烈依赖于电力比率,最终也会需要大型数据中心来拓展交易容量。

著名技术专家,Craig Sellars,Omni基金会和Tether的联合创始人,说过:

bm的区块链创新总是领先于他的时代。只有少数人能从头开始创建一个区块链,而bm就是这少数人中的一个。他一次又一次地推出了突破性的区块链平台和去中心化应用。bm和他的团队正在开发基于EOS.IO的平台,我对于在他们的新平台上开发的区块链的新应用很感兴趣。

但是,这需要一个过程。。。
但是有人会觉得,开发一个像EOS这样目标远大的区块链,你大概需要上百个高级开发人员,需要3个月进行架构设计,然后再花12个月进行开发和测试。不过,bm其实多年来都在做EOS的架构设计,并且已经开发了他所需要的所有类库和代码模式,这样对于发布一个最小可行性产品来说就容易得多。从他在steem上的最新文章来看,我们可以看到这个高性能网络的代码已经快要完成了,公共测试网络将在几周内发布。

感想
开发EOS的团队已经开发了一系列行业领先的区块链软件。
在最近的一份报导中,中本聪的基金管理者Dima Starodubcev说:

对我个人来说,我很高兴,区块链行业中最聪明的头脑之一,bm,在几次成功的实验之后,继续去开发一个成熟的智能合约平台。我们不该仅仅只是关注这个项目,而是应该尽我们所能帮助dapp开发者接受这个平台。尤其是,EOS是完全可行的,它使用的不是特定的虚拟机和编程语言,它使用的是更通用的WebAssembly,它很可能会为整个web打下基础。

我个人相信,bm最后找到了他能把他自己的全部激情倾注其中的挑战,并能创造另一项令人惊叹的突破性的技术。
对此,我诚挚地感想他。
---Fabian  Schuh
  查看全部

翻译原文链接:https://steemit.com/eosio/%40x ... ustry 

2016年,bm和ned scott一起创办了steem,一个基于石墨烯的区块链社交平台。由ned担任ceo,而bm专注于他的长项:技术。在几个月内就开发并发布了功能完整的区块链。它开发了一个工作网站,并开始挖代币steem,代币的生成算法是一种新的只支持cpu的pow挖矿算法。

steem在bitcointalk.org上发了一篇帖子,宣告steem的诞生,同时大家都能开始挖steem。然而当时steem的概念还比较新,很少有人有兴趣去挖steem,于是steemit自己在第一周的时候挖了steem总量的80%;然而,随着新矿工的加入,这个比例开始下降。最开始挖到的steem,被用于支付给投票人,发帖的人,以及其它用户,由此推动了steem社区的发展。steem也解决了新用户的交易成本的问题,他们给每个新用户五美元的steem,这样新用户就能读文章,投票,写文章;这样,新用户就能与应用进行交互而不需要支付初始的费用。到目前为止,steem上的交易都不需要任何网络手续费。这要归功于比例限制交易(rate-limited transaction)的发明,这种方式通过限制带宽来防止spam攻击,而不是通过收手续费来防止spam攻击。

在6个月内,由于通胀,steemit持有的steem已经少于50%,而通胀产生的steem被支付给了矿工,区块生产者,投票者,以及发文的人,但是,steemit仍然拥有多数的steem,能支持开发工作。有些人认为steem是不可持续的,但是,bm说“steemit的资金很充足,它可以吧自己手上的steem卖掉,来筹集开发资金“。
bm一直都想开发一种能并行处理的通用的智能合约区块链,它能向应用和用户提供无手续费的服务,以及plasma那样的功能。为了追求这个愿景,bm和scott以及steemit友好分手,现在,bm已不是steemit的股东了。
为了消除那些认为bm抛弃了steem,与steeim不欢而散的谣言,在2017年4月13日,steem和bm发表了联合声明:


2017年3月14日,bm辞去Steemit, Inc的 CTO一职。Steemit, Inc与bm的合作一向愉快,没有任何争执。Steemit, Inc.与bm都会继续为区块链以及数字货币社区服务,创造价值。Steemit, Inc.感谢bm的付出,bm祝愿steemit的成员,社区成员在steem区块链,steeimt社交平台的发展中继续成功。


EOS
最近,关于EOS的文章已经很多了。有些是谈技术的,有些是谈block.one的,有些是谈投资/交易机会的。由于我是一名工程师,我主要的兴趣是技术,所以,我只会去谈谈EOS软件的细节,以及一些架构的细节。不过,要记住的是,目前EOS软件还没到能使用的状态。

Block.one
目前为止,block.one,运行EOS区块链—一种新的区块链操作系统,用于支持商业级去中心化应用 —  的软件的开发者。

成功的背后是什么?
一方面,是block.one团队看上去拥有一支经验丰富的管理团队,同时得到了区块链行业与金融行业的顶尖投资者和顾问的支持。另一方面,是它的著名成员:bm,CTO,区块链行业的老兵,bitshares和steem的创始人。

软件
EOS将是bm在4年内的第四个公共区块链平台,我个人认为bm毫无疑问会成功。想深入研究这个软件的人,可以在github上查看它的代码。
bm和block.one现在正在开发一种新的区块链软件,他们称之为EOS.IO。在2017共识大会的展示会上,block.one声称他们的软件功能非常厉害,这些功能包括:


1 通过并行处理从而水平拓展的能力
2 没有交易手续费
3 去中心化治理


有些人质疑这个软件是否真的能运转起来,但是bm其实已经创建过实现这项功能的区块链。
Ian Grigg,是一位受人尊敬的金融加密学者,Ricardian 合约的发明者,三重记账法的发明者,同时,他也是block.one的顾问,合伙人,他说:


目前,区块链上其实并没有什么真正有用的应用。bitshares是一款成功的区块链应用。steem是第一个成功的面向终端用户的分布式应用—它是在区块链之上的应用,但是你并不感觉到你是在区块链上。用户并不需要知道也不需要关心。steem打开了把社交媒体当作潜在的dapp的大门。steem的意义在于,你可以在区块链上开发任何社交网络,你可以开发facebook,你可以开发twitter。steem的意义在于我们现在在数字货币领域终于有了真正的应用,这是非常了不起的。


block.one承诺,EOS会是完全透明的。从7月1日开始EOS的代码就已经上传到github上了,任何人都能查看和审核。bm同时继续在steem和其它社交媒体上发布软件的开发进度。block.one还承诺,EOS将会在开发结束后,基于开源证书发布。
大众对EOS.IO技术白皮书的反馈和评论也可以在github上查看(网址: d)[/url] 

bm告诉我:


EOS.IO计划通过把每个合约(应用)在它自己的线程内使用私有数据运行,来达到拓展性能的目的。应用间通过异步通讯进行沟通。这是一种很著名的设计模式,它与以太坊的分片模式的设计理念有相似之处。EOS.IO只是把每个应用置于它自己的分片上。


这对我这个工程师来说,是一种稳妥的办法。
EOS使用WebAssembly语言,这能让开发者使用多种不同的语言来开发他们的应用,包括c,c++,以及rust。bm说,早期的测试表明,目前用c++写的,用WebAssembly运行的简单合约,性能能达到80000tps,而使用Solidity的话,性能只能达到5000tps左右。
以太坊企业联盟(EEA)最近也公布了一份愿景(网址: https://www.infoq.com/news/201 ... Vision)以太坊目前正在寻找pow的替代算法,来提高拓展性,减少计算成本。EEA正在评估多种方法,这些方法可能就是将来以太坊区块共识协议的基石,包括bm的dpos算法也在评估之列。
bm说EOS只是基于他以前开发过的技术和平台,这些技术和平台让他之前的区块链项目成功了。

去中心化
人们对bm的一个未证实的批评是,bm的项目不是去中心化的;虽然,bitshares和steem都是没有中央权威机构或服务器的。steem上的每笔交易都会在45秒内由21个单独的个体中的15个确认(在bitshares中则是2/3的个体),bm说其它平台则需要6个矿池中的4个在6小时内确认。bm认为比特币和以太坊的机制其实是dpow(Delegated Proof of Work),因为那部分生产区块的矿池其实是由矿工们选举出来的。比特币矿池现在的情况还不错,但是几年前,我们知道,一到两个大矿池垄断了比特币网络哈希算力的大头。DPOS对我来说仍然是天书一样。不过,它减少了随机性和变动性的负担,以前区块生产者都需要苦苦解决这两个问题。

在EOS中,区块生产者由代币持有人选举产生,但是,与其它平台不同的是,EOS的治理模式是,用户可以约束住区块生产者,检查他们是不是生产了空区块,或者有其他伤害社区的行为。这样一来,区块生产者的利益和用户的利益就能保持一致,而不像其他使用pow的平台那样,控制平台的人和拥有代币的人不是一群人。bm说,EOS的初衷是运行在全球的多个数据中心上,这样能极大地提高去中心化的机会。这样的话,或许会给那些想通过付费成为区块生产者的人设置了门槛,不过,最终可靠的数据中心的数量会比可靠的挖矿数据中心数量多得多。挖矿能不能盈利强烈依赖于电力比率,最终也会需要大型数据中心来拓展交易容量。

著名技术专家,Craig Sellars,Omni基金会和Tether的联合创始人,说过:


bm的区块链创新总是领先于他的时代。只有少数人能从头开始创建一个区块链,而bm就是这少数人中的一个。他一次又一次地推出了突破性的区块链平台和去中心化应用。bm和他的团队正在开发基于EOS.IO的平台,我对于在他们的新平台上开发的区块链的新应用很感兴趣。


但是,这需要一个过程。。。
但是有人会觉得,开发一个像EOS这样目标远大的区块链,你大概需要上百个高级开发人员,需要3个月进行架构设计,然后再花12个月进行开发和测试。不过,bm其实多年来都在做EOS的架构设计,并且已经开发了他所需要的所有类库和代码模式,这样对于发布一个最小可行性产品来说就容易得多。从他在steem上的最新文章来看,我们可以看到这个高性能网络的代码已经快要完成了,公共测试网络将在几周内发布。

感想
开发EOS的团队已经开发了一系列行业领先的区块链软件。
在最近的一份报导中,中本聪的基金管理者Dima Starodubcev说:


对我个人来说,我很高兴,区块链行业中最聪明的头脑之一,bm,在几次成功的实验之后,继续去开发一个成熟的智能合约平台。我们不该仅仅只是关注这个项目,而是应该尽我们所能帮助dapp开发者接受这个平台。尤其是,EOS是完全可行的,它使用的不是特定的虚拟机和编程语言,它使用的是更通用的WebAssembly,它很可能会为整个web打下基础。


我个人相信,bm最后找到了他能把他自己的全部激情倾注其中的挑战,并能创造另一项令人惊叹的突破性的技术。
对此,我诚挚地感想他。
---Fabian  Schuh
 

EOS不会像以太坊那样遭受DoS攻击

EOS其他相关郑浩 发表了文章 • 0 个评论 • 286 次浏览 • 2017-09-13 19:04 • 来自相关话题

此文翻译自bm的文章:https://steemit.com/eos/%40dan ... ereum
今天早些时候我想在以太坊区块链上建立一个多重签名账号,却发现85美金的手续费都还不够。我十分震惊,手续费竟然这么高。调查之后发现原来是status ico的问题,这次ico的交易量前所未有。
看了看reddit论坛,用户emanslpater 认为不管网络有多好,面对这种ico都会遇到DoS攻击。

这种“资源竞争”的ico的问题在于网络多好都没用---这只会成为新的资源竞争。假设网络能处理两倍于此的交易量,那么人们就会在一半的时间内把交易提交进来。即使网络可以在一个区块上处理十亿交易量,那也只会刺激人们提交更多的交易,最终导致网络堵塞“----emanslpater
 
我曾看到一个相似的说法,那是在一个以太坊的telegram聊天组里,曾有人把社区的无经验归咎于创建了ico合约,这些ico合约设计得相当糟糕。
这是人们用错误的方式看待问题从而得出错误结论的又一个例子。必须承认,一开始我认为emanslpater的说法是有点说服力的;然而,经过一番深思,我认为这对于使用了比例限制算法的平台—比如eos和steem---来说,是错的。
没人能在他们被事先分配的比例上阻塞steem或eos网络,从而拒绝其他用户的交易。拥有1%代币的用户永远只能消耗可用带宽的1%,即使是在网络拥挤的情况下。在不拥挤的情况下,他们会被防止消耗超过50%可用能力。
所以,如果status ico是用eos网络进行的话会发生什么呢?那些每天只有少数几次交易的用户(绝大多数用户都属于此类)根本不会受影响。而那些想利用别人没使用的带宽的人将会被限制,但是也能像其他人一样进行交易。

在eos区块链上派发百万美元
假设,有一个人想分发一百万美元,分发给在一定时间内提出申请的头1000个人。我们还假设这个消息被广泛地传播了。
没人能提前广播(broadcast)因为交易会被拒绝,因此网络不会出现大量扩散。当申请的时间一到,每个人都能同时把他们的交易广播出去。每个节点都会接收并转播头1000个请求,然后拒绝之后的请求。对于挂起的请求每个节点会有些许不同,包括区块生产者。每个区块生产者会基于他接收到的头1000个请求生成区块,然后把这个区块广播出去。一旦把其它所有的节点的交易都广播出去了,那么就会接收到那1000个交易,然后丢弃掉剩余的挂起交易,这些挂起的交易现在被声明为无效的。
整个过程将在3秒内完成,而网络几乎感觉不到它。

结论
只要还保持这种交易费模式,那么以太坊面临的问题就无法解决。而人们还是想以低于市场价的方式参与这种ico,而且是基于先来先得的原则。这些ico可是要分发数百万美元的。

原文链接:https://steemit.com/eos/@peterchen145/eos-dos
  查看全部
此文翻译自bm的文章:https://steemit.com/eos/%40dan ... ereum
今天早些时候我想在以太坊区块链上建立一个多重签名账号,却发现85美金的手续费都还不够。我十分震惊,手续费竟然这么高。调查之后发现原来是status ico的问题,这次ico的交易量前所未有。
看了看reddit论坛,用户emanslpater 认为不管网络有多好,面对这种ico都会遇到DoS攻击。

这种“资源竞争”的ico的问题在于网络多好都没用---这只会成为新的资源竞争。假设网络能处理两倍于此的交易量,那么人们就会在一半的时间内把交易提交进来。即使网络可以在一个区块上处理十亿交易量,那也只会刺激人们提交更多的交易,最终导致网络堵塞“----emanslpater
 
我曾看到一个相似的说法,那是在一个以太坊的telegram聊天组里,曾有人把社区的无经验归咎于创建了ico合约,这些ico合约设计得相当糟糕。
这是人们用错误的方式看待问题从而得出错误结论的又一个例子。必须承认,一开始我认为emanslpater的说法是有点说服力的;然而,经过一番深思,我认为这对于使用了比例限制算法的平台—比如eos和steem---来说,是错的。
没人能在他们被事先分配的比例上阻塞steem或eos网络,从而拒绝其他用户的交易。拥有1%代币的用户永远只能消耗可用带宽的1%,即使是在网络拥挤的情况下。在不拥挤的情况下,他们会被防止消耗超过50%可用能力。
所以,如果status ico是用eos网络进行的话会发生什么呢?那些每天只有少数几次交易的用户(绝大多数用户都属于此类)根本不会受影响。而那些想利用别人没使用的带宽的人将会被限制,但是也能像其他人一样进行交易。

在eos区块链上派发百万美元
假设,有一个人想分发一百万美元,分发给在一定时间内提出申请的头1000个人。我们还假设这个消息被广泛地传播了。
没人能提前广播(broadcast)因为交易会被拒绝,因此网络不会出现大量扩散。当申请的时间一到,每个人都能同时把他们的交易广播出去。每个节点都会接收并转播头1000个请求,然后拒绝之后的请求。对于挂起的请求每个节点会有些许不同,包括区块生产者。每个区块生产者会基于他接收到的头1000个请求生成区块,然后把这个区块广播出去。一旦把其它所有的节点的交易都广播出去了,那么就会接收到那1000个交易,然后丢弃掉剩余的挂起交易,这些挂起的交易现在被声明为无效的。
整个过程将在3秒内完成,而网络几乎感觉不到它。

结论
只要还保持这种交易费模式,那么以太坊面临的问题就无法解决。而人们还是想以低于市场价的方式参与这种ico,而且是基于先来先得的原则。这些ico可是要分发数百万美元的。

原文链接:https://steemit.com/eos/@peterchen145/eos-dos
 

Daniel Larimer的故事和Steemit由来

EOS其他相关郑浩 发表了文章 • 0 个评论 • 412 次浏览 • 2017-09-13 18:36 • 来自相关话题

​​​ 了解Daniel Larimer 的故事和steemit的设计思路对理解未来的优质区块链项目会有重要启发。 因为Daniel在Github上的用户名是bytemaster,本文就以BM来代称Daniel Larimer.





 
启发

​​​目前ICO的非常优秀的项目Press.one和Motion.one都会借鉴Steemit的设计原则。
 
己所不欲,勿施于人

BM的结论是,对他人的进行暴利税收,如ETH和BTC的gas fee对于用户来说都是和勒索无异


寻找自由市场解决方案来保障生命,自由和财产





 
大约5年前,BM意识到有组织犯罪集团的解决方式与政府一样,必须从自由市场出发。意外的是,任何自由市场的替代政府,无法将我们从现在的政府中解放出来,都不会强到足以阻止让政府接管。

BM也意识到,对生命,自由和财产的需求是非常高的,任何人都可以找到一种方法来提供这些东西到市场上,可以赚到很多钱,同时使世界变得更美好。在这个时候,BM开始寻找非暴力手段来使暴力形式的政府无能为力。

货币


BM认识到货币是政府权力的根源,使用金钱完全是自愿的。没有人强迫你以美元支付。政府有权在世界任何地方夺取财产。很明显,自由市场将需要一种没有物质财产支持的资金。

当BM在2009年初发现比特币时,BM试图设计一种数字货币。BM立即参与了尝试推广比特币。





 
离婚

大概在同一时间BM也经历了离婚的打击。BM的离婚是因为他的前妻发现他们的世界观是相违背。BM之前是基督教徒,因为人们在利益面前还是只会捍卫自己的而利益。BM很naive的相信前妻利用基督教的仲裁很公正的来划分家庭财产,解决监护和儿童抚养问题。然而前妻却非常自私地索要大量抚养费。通过离婚事件,BM更深刻地认识到教会的腐败。





 
开发BitShares


此时,比特币在政府关闭交易所和/或扣押银行账户方面遇到问题。BM当时想到如果没有一个 分散的替代方案,比特币可能会死亡。这是当BM启动BitShares并发明BitUSD - 与成为第一个 美元挂钩的加密货币。 在接下来的两年半的时间里,BM系统地解决了将块链技术带到一个可以支持分散式交换的成 熟度的必要技术挑战。所产生的技术被称为石墨烯Graphene,成为BitShares,Steem,EOS 和Oraclechain的基石。






冥想,坐享

在绝望的深处,BM学会了如何放下。 坚持愤怒和愤慨只是会更加痛苦。 冥想让人认识到他 是谁。学会享受当下生活的乐趣,不会沉迷于过去的不公正的对待中。 BM学会了放弃无法改 变的事情,并专注于能改变的事情。 冥想训练让他有能力在任何境遇中保持冷静。
 





 
问题和思考


在BitShares工作的让BM成长很多。在同一时期内,该行业成熟。政府法规变得更加清晰。中 心化的交易所已被政府接受,不再被关闭的危险。换句话说,BitShares解决的问题不存在 了。

Steemit

他也了解到,资本主义的一个缺点就是太过短视。BM开始看到如何通过收取有限 交易的交易费来赚取赚取收入的自私动机。如果“通货膨胀”为了补偿那些带来价值的人,而并不会导致财富缩水。BM了解到,真正的盗窃行为是期待人们免费工作,而无法 获得他们生成的产品的股权。

笔者注:认识到通货膨胀的缺点并没有那么可怕,也成为EOS,每年5%的基石

BM决定采取经验教训,提出新的价值基于 这样的前提:每个带来价值的人都应该享有分享。

1. 不对任何参与社区的人 收取费用的 概念,

2. 奖励每个人的创作。

3. 长期承诺 ,绝不是快速致富。







 
BM决定采取经验教训,并创造一个围绕BM的新价值建立在线社区的新尝试。这些新价值基于 这样的前提:每个带来价值的人都应该享有分享。它们包括 不对任何参与社区的人 收取费用的 概念,但是奖励每个人。它们包括 长期承诺 ,绝不是快速致富。

展望未来,BM希望利用Steem在这里开展的工作,建立市场,保险,互助的社会和公正司法 制度,使BM们的社区免受政府的威胁。BM认为,有组织的 社交压力 比任何常任军队或政府官 僚 的强制都要强大得多。通过封锁技术,BM们可以组织起来,希望实现自由。 只有通过共同努力,BM们才能 最大限度地提高人人的生命,自由和财产 。追求暴力只会摧毁 生命,自由和财产的捷径。





 
笔者感悟:

没有人一生下来就是完美的,很多经历痛苦并反思会让BM们成长。Daniel Larimer的故事让我们意识到成功不是一蹴而就的,而是通过反复试错,并在痛苦中反思,等到经验之后坚持自己的信念,不断积累。最终通过量变到质变。成就伟大的产品和公司。
 







参考链接:[url=https://steemit.com/introduceyourself/@dantheman/daniel-larimer--co-founder-of-bitshares-steemit]https://steemit.com/introducey ... eemit​​​​[/url]

作者:胖虎晓顿_黄希平
链接:http://www.jianshu.com/p/d61ca5cdaf78
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  查看全部
​​​ 了解Daniel Larimer 的故事和steemit的设计思路对理解未来的优质区块链项目会有重要启发。 因为Daniel在Github上的用户名是bytemaster,本文就以BM来代称Daniel Larimer.

3866441-8bd00c4f46ab75a7.png

 
启发

​​​目前ICO的非常优秀的项目Press.one和Motion.one都会借鉴Steemit的设计原则。
 
己所不欲,勿施于人

BM的结论是,对他人的进行暴利税收,如ETH和BTC的gas fee对于用户来说都是和勒索无异


寻找自由市场解决方案来保障生命,自由和财产

3866441-9be4bee83c8c7480.png

 
大约5年前,BM意识到有组织犯罪集团的解决方式与政府一样,必须从自由市场出发。意外的是,任何自由市场的替代政府,无法将我们从现在的政府中解放出来,都不会强到足以阻止让政府接管。

BM也意识到,对生命,自由和财产的需求是非常高的,任何人都可以找到一种方法来提供这些东西到市场上,可以赚到很多钱,同时使世界变得更美好。在这个时候,BM开始寻找非暴力手段来使暴力形式的政府无能为力。

货币


BM认识到货币是政府权力的根源,使用金钱完全是自愿的。没有人强迫你以美元支付。政府有权在世界任何地方夺取财产。很明显,自由市场将需要一种没有物质财产支持的资金。

当BM在2009年初发现比特币时,BM试图设计一种数字货币。BM立即参与了尝试推广比特币。

3866441-7ee98831dc051363.png

 
离婚

大概在同一时间BM也经历了离婚的打击。BM的离婚是因为他的前妻发现他们的世界观是相违背。BM之前是基督教徒,因为人们在利益面前还是只会捍卫自己的而利益。BM很naive的相信前妻利用基督教的仲裁很公正的来划分家庭财产,解决监护和儿童抚养问题。然而前妻却非常自私地索要大量抚养费。通过离婚事件,BM更深刻地认识到教会的腐败。

3866441-16a6f3a74c065c28.png

 
开发BitShares


此时,比特币在政府关闭交易所和/或扣押银行账户方面遇到问题。BM当时想到如果没有一个 分散的替代方案,比特币可能会死亡。这是当BM启动BitShares并发明BitUSD - 与成为第一个 美元挂钩的加密货币。 在接下来的两年半的时间里,BM系统地解决了将块链技术带到一个可以支持分散式交换的成 熟度的必要技术挑战。所产生的技术被称为石墨烯Graphene,成为BitShares,Steem,EOS 和Oraclechain的基石。

3866441-6025e4dc48f24746.png


冥想,坐享

在绝望的深处,BM学会了如何放下。 坚持愤怒和愤慨只是会更加痛苦。 冥想让人认识到他 是谁。学会享受当下生活的乐趣,不会沉迷于过去的不公正的对待中。 BM学会了放弃无法改 变的事情,并专注于能改变的事情。 冥想训练让他有能力在任何境遇中保持冷静。
 

3866441-c04c5ac348a0f2de.png

 
问题和思考


在BitShares工作的让BM成长很多。在同一时期内,该行业成熟。政府法规变得更加清晰。中 心化的交易所已被政府接受,不再被关闭的危险。换句话说,BitShares解决的问题不存在 了。

Steemit

他也了解到,资本主义的一个缺点就是太过短视。BM开始看到如何通过收取有限 交易的交易费来赚取赚取收入的自私动机。如果“通货膨胀”为了补偿那些带来价值的人,而并不会导致财富缩水。BM了解到,真正的盗窃行为是期待人们免费工作,而无法 获得他们生成的产品的股权。

笔者注:认识到通货膨胀的缺点并没有那么可怕,也成为EOS,每年5%的基石

BM决定采取经验教训,提出新的价值基于 这样的前提:每个带来价值的人都应该享有分享。

1. 不对任何参与社区的人 收取费用的 概念,

2. 奖励每个人的创作。

3. 长期承诺 ,绝不是快速致富。



3866441-2273bf0b57dd9832.jpg

 
BM决定采取经验教训,并创造一个围绕BM的新价值建立在线社区的新尝试。这些新价值基于 这样的前提:每个带来价值的人都应该享有分享。它们包括 不对任何参与社区的人 收取费用的 概念,但是奖励每个人。它们包括 长期承诺 ,绝不是快速致富。

展望未来,BM希望利用Steem在这里开展的工作,建立市场,保险,互助的社会和公正司法 制度,使BM们的社区免受政府的威胁。BM认为,有组织的 社交压力 比任何常任军队或政府官 僚 的强制都要强大得多。通过封锁技术,BM们可以组织起来,希望实现自由。 只有通过共同努力,BM们才能 最大限度地提高人人的生命,自由和财产 。追求暴力只会摧毁 生命,自由和财产的捷径。

3866441-2417b9cd5d5204a0_(1).jpg

 
笔者感悟:

没有人一生下来就是完美的,很多经历痛苦并反思会让BM们成长。Daniel Larimer的故事让我们意识到成功不是一蹴而就的,而是通过反复试错,并在痛苦中反思,等到经验之后坚持自己的信念,不断积累。最终通过量变到质变。成就伟大的产品和公司。
 

3866441-0400a2daac8b5235.jpg



参考链接:[url=https://steemit.com/introduceyourself/@dantheman/daniel-larimer--co-founder-of-bitshares-steemit]https://steemit.com/introducey ... eemit​​​​[/url]

作者:胖虎晓顿_黄希平
链接:http://www.jianshu.com/p/d61ca5cdaf78
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

EOS 架构简介

EOS代码分析郑浩 发表了文章 • 0 个评论 • 870 次浏览 • 2017-09-13 18:20 • 来自相关话题

在积累BitShares和Steem三年的实践经验之后,我们深刻认识到做出一个伟大的分布式应用绝不仅仅需要一个快速传输的区块链本身, 它还需要能够为数百万并发用户提供可用体验的基础设施。

在steemit.com的早期,用户期望更够不上传图像到Steemit上,并由Steemit来保存。
使用EOS.IO软件,我们在block.one设想了一个世界,其中区块生产者(block produer)提供给用户基础架构,允许开发人员在构建和部署其应用程序,而无需自己运行任何服务器。 这包括像steemit,DTube,BitShares这样复杂的应用程序。






客户端 React.js :

2015年3月React Native 发布,结果一天之内,就在github上获得了 5000 颗星。
React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源。

react-router: react.js唯一可选的路由库。它通过管理 URL,实现组件的切换和状态的变化,开发复杂的应用几乎肯定会用到。教程

redux:React 只是 DOM 的一个抽象层,并不是 Web 应用的完整解决方案。有两个方面,它没涉及:
 

- 代码结构 
- 组件之间的通信
 

为了解决这个问题,2014年 Facebook 提出了 Flux 架构的概念,引发了很多的实现。2015年,Redux 出现,将 Flux 与函数式编程结合一起,很短时间内就成为了最热门的前端架构。适用场景:多交互、多数据源:
 

- 用户的使用方式复杂 
- 不同身份的用户有不同的使用方式(比如普通用户和管理员) 
- 多个用户之间可以协作
 - 与服务器大量交互,或者使用了WebSocket
 - View要从多个来源获取数据
 

react-apollo: 用于连接GraphQL 和 reactJS的一个库
总结:
React不是一个库,也不是一个框架,而是一个庞大的体系。React 不使用 HTML,而使用 JSX 。它打算抛弃 DOM。
 





 

EOS.IO存储是一种分散的文件系统,旨在为世界各地的互联网用户提供永久存储和托管任何浏览器可访问的法律文件的能力。 与现行方案不同,EOS.IO存储没有存储或带宽费用。 基于IPFS,EOS.IO存储是由块生产者为持有EOS代币的人提供的服务。块生产者将在IPFS网络上复制并托管代币持有者的文件(笔者注: 类似Sia.tech),并提供允许任何具有浏览器的人访问文件的https端点。

笔者思考:EOS的文件会放到IPFS上,如果你删除你的文件,你将赎回你的币,EOS存储空间和代币使用如同当铺和现金。

在同一价格,提供更多储存空间的块链生产者会从令牌持有者那里获得更多的投票,最终所有块链生产者会达成关于单位存储空间和所需代币价格之间的平衡。
 
数据库查询





 
除了托管文件外,块生产者能够通过运行API节点帮助代币持有者查询块链数据库状态的。 这些API包括面向图数据库的工具Graph QL的和基于Web组件。 这使得应用程序无需运行和维护自己的可扩展托管服务就可以获得所需的信息。
block.one将设计和发布开源微服务,块生产者可以部署以将块链接数据库状态映射到更传统的数据库中,目的是扩展读访问,可维护性和附加索引。 该软件将促进应用程序开发人员和块生产者构建与传统数据库API进行交互的Web应用程序。

笔者评论: 这次EOS使用的数据查询工具GraphQL和客户端工具React.js都是Facebook
 

资源限制





 
应用程序在块链和接口上都占用传输带宽,CPU和存储空间。 块链生产者必须设置访问限制规则,以防用户滥用。 这对于文件下载和API查询是相同的方式来测量块链更新的带宽和CPU时间。 在合同中持有少量原生代币的用户应能够对大多数应用程序具有合理的免费访问级别。

该模型将很好做到带宽平衡,CPU和存储空间给上传或下载的需求。网站付费提供托管的模式,并且增加了将账单和利率限制透明地移动到最终控制消费的用户的灵活性。 这对于像Dtube这样的带宽密集型应用程序至关重要。

自定义的基础架构

block.one认识到使用块生成者提供的通用版本基础架构可以构建的应用程序是有限的。 具体来说,用户需要服务器端提供完全的支持(例如,steemit)或需要由定制微服务维护的自定义数据库索引(例如,市场历史)的应用程序可能需要由应用程序开发人员或其他方托管的定制服务器基础架构。 这些应用程序的开发人员可以从块生产者使用可扩展架构中获益,从而部署自己的定制API和查询服务。 这将有助于开发人员迅速将可扩展应用程序基础架构带入市场

作者:胖虎晓顿_黄希平
链接:http://www.jianshu.com/p/6bdc9525cb6f
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  查看全部
在积累BitShares和Steem三年的实践经验之后,我们深刻认识到做出一个伟大的分布式应用绝不仅仅需要一个快速传输的区块链本身, 它还需要能够为数百万并发用户提供可用体验的基础设施。

在steemit.com的早期,用户期望更够不上传图像到Steemit上,并由Steemit来保存。
使用EOS.IO软件,我们在block.one设想了一个世界,其中区块生产者(block produer)提供给用户基础架构,允许开发人员在构建和部署其应用程序,而无需自己运行任何服务器。 这包括像steemit,DTube,BitShares这样复杂的应用程序。

3866441-75058ee05f7b7f8d.png


客户端 React.js :

2015年3月React Native 发布,结果一天之内,就在github上获得了 5000 颗星。
React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源。

react-router: react.js唯一可选的路由库。它通过管理 URL,实现组件的切换和状态的变化,开发复杂的应用几乎肯定会用到。教程

redux:React 只是 DOM 的一个抽象层,并不是 Web 应用的完整解决方案。有两个方面,它没涉及:
 


- 代码结构 
- 组件之间的通信
 


为了解决这个问题,2014年 Facebook 提出了 Flux 架构的概念,引发了很多的实现。2015年,Redux 出现,将 Flux 与函数式编程结合一起,很短时间内就成为了最热门的前端架构。适用场景:多交互、多数据源:
 


- 用户的使用方式复杂 
- 不同身份的用户有不同的使用方式(比如普通用户和管理员) 
- 多个用户之间可以协作
 - 与服务器大量交互,或者使用了WebSocket
 - View要从多个来源获取数据
 


react-apollo: 用于连接GraphQL 和 reactJS的一个库
总结:
React不是一个库,也不是一个框架,而是一个庞大的体系。React 不使用 HTML,而使用 JSX 。它打算抛弃 DOM。
 

3866441-de06c9f60c48d0c7.png

 

EOS.IO存储是一种分散的文件系统,旨在为世界各地的互联网用户提供永久存储和托管任何浏览器可访问的法律文件的能力。 与现行方案不同,EOS.IO存储没有存储或带宽费用。 基于IPFS,EOS.IO存储是由块生产者为持有EOS代币的人提供的服务。块生产者将在IPFS网络上复制并托管代币持有者的文件(笔者注: 类似Sia.tech),并提供允许任何具有浏览器的人访问文件的https端点。

笔者思考:EOS的文件会放到IPFS上,如果你删除你的文件,你将赎回你的币,EOS存储空间和代币使用如同当铺和现金。

在同一价格,提供更多储存空间的块链生产者会从令牌持有者那里获得更多的投票,最终所有块链生产者会达成关于单位存储空间和所需代币价格之间的平衡。
 
数据库查询

3866441-33773ee5d853f367.png

 
除了托管文件外,块生产者能够通过运行API节点帮助代币持有者查询块链数据库状态的。 这些API包括面向图数据库的工具Graph QL的和基于Web组件。 这使得应用程序无需运行和维护自己的可扩展托管服务就可以获得所需的信息。
block.one将设计和发布开源微服务,块生产者可以部署以将块链接数据库状态映射到更传统的数据库中,目的是扩展读访问,可维护性和附加索引。 该软件将促进应用程序开发人员和块生产者构建与传统数据库API进行交互的Web应用程序。

笔者评论: 这次EOS使用的数据查询工具GraphQL和客户端工具React.js都是Facebook
 

资源限制

3866441-18c6a1c47ff28c57.png

 
应用程序在块链和接口上都占用传输带宽,CPU和存储空间。 块链生产者必须设置访问限制规则,以防用户滥用。 这对于文件下载和API查询是相同的方式来测量块链更新的带宽和CPU时间。 在合同中持有少量原生代币的用户应能够对大多数应用程序具有合理的免费访问级别。

该模型将很好做到带宽平衡,CPU和存储空间给上传或下载的需求。网站付费提供托管的模式,并且增加了将账单和利率限制透明地移动到最终控制消费的用户的灵活性。 这对于像Dtube这样的带宽密集型应用程序至关重要。

自定义的基础架构

block.one认识到使用块生成者提供的通用版本基础架构可以构建的应用程序是有限的。 具体来说,用户需要服务器端提供完全的支持(例如,steemit)或需要由定制微服务维护的自定义数据库索引(例如,市场历史)的应用程序可能需要由应用程序开发人员或其他方托管的定制服务器基础架构。 这些应用程序的开发人员可以从块生产者使用可扩展架构中获益,从而部署自己的定制API和查询服务。 这将有助于开发人员迅速将可扩展应用程序基础架构带入市场

作者:胖虎晓顿_黄希平
链接:http://www.jianshu.com/p/6bdc9525cb6f
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

EOS开发帮助一览

EOS代码分析郑浩 发表了文章 • 0 个评论 • 724 次浏览 • 2017-09-07 20:33 • 来自相关话题

原文地址:https://steemit.com/eosdev/%40 ... opers
 
虽然官方的测试网络还在准备当中,但是任何人都可以在本地节点搭建自己的测试环境。

我们已经开始把开发者文档整合到一起。文档常常落后于开发的进度,而且目前的文档,远没达到我们计划与官方测试网络一起发布的标准。

https://eosio.github.io/eos/
 
构建一个本地节点

任何人都可以根据下面的构建指南,搭建一个本地节点:

How to Build EOS.IO (eosd)
 
通过RPC 与本地节点进行交互

eosd 可以配置为一个REST/JSON接口。现在的api还十分有限,但是随着时间推移,将来会得到极大拓展。如何与RPC接口进行交互的信息可以直接查看这个文档:
eosc - command line client
当前的开发状态

目前在做的是无签名验证。这意味着一个账号可以触发任意动作(action)。这使得对应用逻辑的测试变得非常方便。而且,在目前的情况下,使用网络对你的应用进行测试时,也不必要保留钱包的私钥。

接下来的几周,我们会构建一个CLI钱包,这样开发者就能开启签名验证功能,以及许可检查功能。

同时提醒一下,用目前的RPC API很难查询你合约的状态。这会在下周得到修正。

开始开发

我们已经有了几个示例合约,开发者可以从这几个示例开始:

更多关于可用的api的信息,可以查看这里:
如何开发合约
这里有一个文档的目录https://eosio.github.io/eos/modules.html

开发者频道

我们在telegram上开了一个新的开发者频道。这个频道的话题主要是开发。如果你有开发方面的问题,这是从社区获得实时帮助的最好地方。我们的开发者也会看看这个频道,时间允许的话会尝试提供帮助。

我们也在steemit上建了一个#eosdev标签。如果你有开发方面的问题,或者对开发问题的解答,可以发到这个标签下。我会跟进,然后把它转到我们的stack exchange上。高质量的问题,回答和示例,我们会点赞。

一切都只是刚刚开始

这篇文章是根据社区的要求发出来的。我们欢迎大家给我们提供反馈,这将帮助我们更好的开发eos.io,去满足开发者的需求。文档和设计都还会变,但是有了你们的帮助,它们会变得更好。
转自peterchen145@steemit
  查看全部
原文地址:https://steemit.com/eosdev/%40 ... opers
 
虽然官方的测试网络还在准备当中,但是任何人都可以在本地节点搭建自己的测试环境。

我们已经开始把开发者文档整合到一起。文档常常落后于开发的进度,而且目前的文档,远没达到我们计划与官方测试网络一起发布的标准。

https://eosio.github.io/eos/
 
构建一个本地节点

任何人都可以根据下面的构建指南,搭建一个本地节点:

How to Build EOS.IO (eosd)
 
通过RPC 与本地节点进行交互

eosd 可以配置为一个REST/JSON接口。现在的api还十分有限,但是随着时间推移,将来会得到极大拓展。如何与RPC接口进行交互的信息可以直接查看这个文档:
eosc - command line client
当前的开发状态

目前在做的是无签名验证。这意味着一个账号可以触发任意动作(action)。这使得对应用逻辑的测试变得非常方便。而且,在目前的情况下,使用网络对你的应用进行测试时,也不必要保留钱包的私钥。

接下来的几周,我们会构建一个CLI钱包,这样开发者就能开启签名验证功能,以及许可检查功能。

同时提醒一下,用目前的RPC API很难查询你合约的状态。这会在下周得到修正。

开始开发

我们已经有了几个示例合约,开发者可以从这几个示例开始:

更多关于可用的api的信息,可以查看这里:
如何开发合约
这里有一个文档的目录https://eosio.github.io/eos/modules.html

开发者频道

我们在telegram上开了一个新的开发者频道。这个频道的话题主要是开发。如果你有开发方面的问题,这是从社区获得实时帮助的最好地方。我们的开发者也会看看这个频道,时间允许的话会尝试提供帮助。

我们也在steemit上建了一个#eosdev标签。如果你有开发方面的问题,或者对开发问题的解答,可以发到这个标签下。我会跟进,然后把它转到我们的stack exchange上。高质量的问题,回答和示例,我们会点赞。

一切都只是刚刚开始

这篇文章是根据社区的要求发出来的。我们欢迎大家给我们提供反馈,这将帮助我们更好的开发eos.io,去满足开发者的需求。文档和设计都还会变,但是有了你们的帮助,它们会变得更好。
转自peterchen145@steemit
 

EOS价值的逻辑

EOS众筹价格admin 发表了文章 • 0 个评论 • 1202 次浏览 • 2017-09-07 18:58 • 来自相关话题

区块链的未来是商业应用的天下

未来ETH和EOS其中一个会超过苹果的市值,第一个成为万亿美金的庞然大物。


就商业落地这一项 ,但是我个人更加偏向于EOS

         以太坊网络受限于CPU的单线程性能。早期的测试网络达到每秒25次交易(还是在优化了的情况下),经过优化,可以增加到50次 或 100 次交易/秒。但在实际应用中,以太坊网络的交易差不多是10次交易/秒,

这样的交易速度对商业应用来讲远远不够的, 商业最注重价值,时间,成本。

EOS:每秒10,000-100,000笔交易,加持并行技术拓展网络,处理能力将到达每秒百万笔交易。 


           没有交易费用,EOS也就不需要计数操作。(steemit)

李笑来的pressone想法一直都有

       他之前也有投资ETH,但是他并没有吧pressone想法搭建在ETH平台上,当然是因为ETH没法解决他的商业需求,所以他找到了EOS,之所以投资也是因为EOS可能会解决了这个问题,

每秒数十万量级交易以及运行的系统的零成本。对于pressone这种做新闻价值传输的平台李不做,也有其他人会在EOS上做,因为这种区块链社交媒体如果搭建在ETH上每天消耗的GAS是惊人的, 因为项目的迅速膨胀 ,以太坊系统每块GAS消耗量从年初200万到现在600万GAS,这次央行查处ICO,退币是退币,但实质只是把ETH从项目处倒回到用户手中,用户仍旧可以选择搭建在ETH其中的项目,但是整个系统运行的项目是会继续运行的,GAS仍旧在消耗,

 目前来看 gas消耗增加,但价格却没6月份高,用户量增加,价格降低本身就是泡沫减小的过程,也就是去泡沫化,目前ETH就是这样的状态

​       EOS和以太坊的经济模型区别。实际上,它们之间的区别就是所有权模式和租赁模式的区别。在以太坊中,交易,存储,操作,带宽使用的每次计算都需要gas费用。而且,gas费用是波动的,能设成非常高的值,因为矿工倾向于选择那些高费用的交易来处理。这种经济模式会出现一种情况:富有的玩家可以向网络中发送大量高费用的交易从而导致网络瘫痪。而且,这种模式要求开发者和创业公司在他们应用的开发和部署期间持续的gas燃烧费用。

      EOS将使用所有权模式,在这种模式中,持有EOS代币将在网络带宽,存储,处理能力方面给予用于一定的份额。这意味着如果某人拥有1%的EOS代币,那么他就永远只能获得1%的网络带宽,而不论网络剩余部分的负载情况。通过这种方法,小的创业公司和开发者都能购买相对较小的网络的份额,从而能够得到稳定可靠的可预期的网络带宽和算力,如果他们需要扩大他们的应用只需要购买更多的EOS代币即可。而且,由于EOS网络没有交易费用,因此就不存在网络开发成本,除了开始时购买EOS代币的成本。当然,如果愿意的话也可以把代币卖掉,收回投资。(steemit)

     ​  其实我个人认为 ETH更像是安卓,EOS更像是IOS。

​      ETH是开发者的热土,你只需要小的费用即可进行多次的项目试错,而只要成功了一个新项目,那回报也是惊人的,项目代币的价值。

 ETH的问题在于开发者项目正式转变为盈利项目时候其运营成本随着体量增加而扩大,怎么减小已入住项目继续运行的成本这是ETH项目所要考虑的一点,另一方面就是为世人诟病的转账问题,每秒处理速度的臃肿对于商业应用永远拖后退的,因为未来EOS主网上线,不排除已成熟项目迁移到EOS主网上,从而产生竞争效果。

      ETH卖掉最好的时机应该是项目的锐减,目前只是退回ICO资金但不封锁项目,可以预见接下来的gas daily cost还是会增加,当项目的增加数量带来的新用户增长推升购买力无法维持高额的gas消耗,并清理项目的时候,也是要撤出ETH的投资时刻了(这时候需要考量ETH盈利项目的运营成本即收租多少了)。

      EOS是成熟商业模式的热土,对于经营者来讲,有了稳定盈利系统的项目而言,低成本甚至无成本的运营才是关键。

       EOS最厉害的一点我觉得是其绑定了企业的营收,苹果只是单单绑定了旗下软件的盈利抽成30%,但是亏损的企业营收活动仍旧给EOS带来价值,在目前如此多烧钱​而不盈利的项目,哪怕只有一个嫁接到EOS平台上,都会带来巨大的网络价值增加,烧钱意味着获取用户,用户量决定价值网络,但是如果转移到IOS上则什么也没有。

      但是它的问题存在于 其绑定模式,占据了大量EOS份额并占有大量带宽的企业一旦出现创新能力以及造血能力的下降,带宽就出现闲置,网络价值也随之减小,EOS需要解决的是后来创业者如何与 之前既得利益者的带宽分配问题,也就是北京房价问题,做不好,对于企业创新与用户决定一切,那网络价值崩塌也就不远了,所以在带宽分配问题之前卖出EOS。

      熊市情况下,类比ETH,ETH的众筹2元但是是在比特币4000rmb,但是上P网交易时比特币1500,大熊市,但仍在6元价格维持,好的资产可以穿越牛熊,EOS就是熊市储备的子弹,昨天抄底EOS也是为了预防熊市风险。

      好了说EOS起飞时间什么是最可能的起飞时间呢,按我自己想法而言,目前牛市依旧,那EOS会处于阴涨状态,到分发完毕的3/4时间轴中,其价格应该是从5慢慢回到13的价值区间,然后牛市尾巴引爆到100元左右(此时也是分发完毕),接下来漫长熊市洗筹,在40--100区间震荡,EOS真正引爆点会是此次牛末和下一次牛初。

       但是目前也有熊市的风险,熊市那就更好操作了,慢慢屯,然后等起飞,下一个龙头引领者。

      所以长线看这个家伙是超长线,毕竟是万亿美金高楼大厦,需要时间满满垒起来(相对于暴利的区块链市场来说,但是对于白银以及股票类那都快的多了),对于暴利的区块链市场目前情况投资策略还是找小市值,埋伏一个爆发就对了,

          然后目前liqui已被国内玩家占领情况,去那注册个号,找新上市的,市值小的,屯便是。

         注意也要找一些国内ICO退还的币种
原文地址新浪微博,作者:Ajroc
  查看全部
区块链的未来是商业应用的天下

未来ETH和EOS其中一个会超过苹果的市值,第一个成为万亿美金的庞然大物。


就商业落地这一项 ,但是我个人更加偏向于EOS

         以太坊网络受限于CPU的单线程性能。早期的测试网络达到每秒25次交易(还是在优化了的情况下),经过优化,可以增加到50次 或 100 次交易/秒。但在实际应用中,以太坊网络的交易差不多是10次交易/秒,

这样的交易速度对商业应用来讲远远不够的, 商业最注重价值,时间,成本。

EOS:每秒10,000-100,000笔交易,加持并行技术拓展网络,处理能力将到达每秒百万笔交易。 


           没有交易费用,EOS也就不需要计数操作。(steemit)

李笑来的pressone想法一直都有

       他之前也有投资ETH,但是他并没有吧pressone想法搭建在ETH平台上,当然是因为ETH没法解决他的商业需求,所以他找到了EOS,之所以投资也是因为EOS可能会解决了这个问题,

每秒数十万量级交易以及运行的系统的零成本。对于pressone这种做新闻价值传输的平台李不做,也有其他人会在EOS上做,因为这种区块链社交媒体如果搭建在ETH上每天消耗的GAS是惊人的, 因为项目的迅速膨胀 ,以太坊系统每块GAS消耗量从年初200万到现在600万GAS,这次央行查处ICO,退币是退币,但实质只是把ETH从项目处倒回到用户手中,用户仍旧可以选择搭建在ETH其中的项目,但是整个系统运行的项目是会继续运行的,GAS仍旧在消耗,

 目前来看 gas消耗增加,但价格却没6月份高,用户量增加,价格降低本身就是泡沫减小的过程,也就是去泡沫化,目前ETH就是这样的状态

​       EOS和以太坊的经济模型区别。实际上,它们之间的区别就是所有权模式和租赁模式的区别。在以太坊中,交易,存储,操作,带宽使用的每次计算都需要gas费用。而且,gas费用是波动的,能设成非常高的值,因为矿工倾向于选择那些高费用的交易来处理。这种经济模式会出现一种情况:富有的玩家可以向网络中发送大量高费用的交易从而导致网络瘫痪。而且,这种模式要求开发者和创业公司在他们应用的开发和部署期间持续的gas燃烧费用。

      EOS将使用所有权模式,在这种模式中,持有EOS代币将在网络带宽,存储,处理能力方面给予用于一定的份额。这意味着如果某人拥有1%的EOS代币,那么他就永远只能获得1%的网络带宽,而不论网络剩余部分的负载情况。通过这种方法,小的创业公司和开发者都能购买相对较小的网络的份额,从而能够得到稳定可靠的可预期的网络带宽和算力,如果他们需要扩大他们的应用只需要购买更多的EOS代币即可。而且,由于EOS网络没有交易费用,因此就不存在网络开发成本,除了开始时购买EOS代币的成本。当然,如果愿意的话也可以把代币卖掉,收回投资。(steemit)

     ​  其实我个人认为 ETH更像是安卓,EOS更像是IOS。

​      ETH是开发者的热土,你只需要小的费用即可进行多次的项目试错,而只要成功了一个新项目,那回报也是惊人的,项目代币的价值。

 ETH的问题在于开发者项目正式转变为盈利项目时候其运营成本随着体量增加而扩大,怎么减小已入住项目继续运行的成本这是ETH项目所要考虑的一点,另一方面就是为世人诟病的转账问题,每秒处理速度的臃肿对于商业应用永远拖后退的,因为未来EOS主网上线,不排除已成熟项目迁移到EOS主网上,从而产生竞争效果。

      ETH卖掉最好的时机应该是项目的锐减,目前只是退回ICO资金但不封锁项目,可以预见接下来的gas daily cost还是会增加,当项目的增加数量带来的新用户增长推升购买力无法维持高额的gas消耗,并清理项目的时候,也是要撤出ETH的投资时刻了(这时候需要考量ETH盈利项目的运营成本即收租多少了)。

      EOS是成熟商业模式的热土,对于经营者来讲,有了稳定盈利系统的项目而言,低成本甚至无成本的运营才是关键。

       EOS最厉害的一点我觉得是其绑定了企业的营收,苹果只是单单绑定了旗下软件的盈利抽成30%,但是亏损的企业营收活动仍旧给EOS带来价值,在目前如此多烧钱​而不盈利的项目,哪怕只有一个嫁接到EOS平台上,都会带来巨大的网络价值增加,烧钱意味着获取用户,用户量决定价值网络,但是如果转移到IOS上则什么也没有。

      但是它的问题存在于 其绑定模式,占据了大量EOS份额并占有大量带宽的企业一旦出现创新能力以及造血能力的下降,带宽就出现闲置,网络价值也随之减小,EOS需要解决的是后来创业者如何与 之前既得利益者的带宽分配问题,也就是北京房价问题,做不好,对于企业创新与用户决定一切,那网络价值崩塌也就不远了,所以在带宽分配问题之前卖出EOS。

      熊市情况下,类比ETH,ETH的众筹2元但是是在比特币4000rmb,但是上P网交易时比特币1500,大熊市,但仍在6元价格维持,好的资产可以穿越牛熊,EOS就是熊市储备的子弹,昨天抄底EOS也是为了预防熊市风险。

      好了说EOS起飞时间什么是最可能的起飞时间呢,按我自己想法而言,目前牛市依旧,那EOS会处于阴涨状态,到分发完毕的3/4时间轴中,其价格应该是从5慢慢回到13的价值区间,然后牛市尾巴引爆到100元左右(此时也是分发完毕),接下来漫长熊市洗筹,在40--100区间震荡,EOS真正引爆点会是此次牛末和下一次牛初。

       但是目前也有熊市的风险,熊市那就更好操作了,慢慢屯,然后等起飞,下一个龙头引领者。

      所以长线看这个家伙是超长线,毕竟是万亿美金高楼大厦,需要时间满满垒起来(相对于暴利的区块链市场来说,但是对于白银以及股票类那都快的多了),对于暴利的区块链市场目前情况投资策略还是找小市值,埋伏一个爆发就对了,

          然后目前liqui已被国内玩家占领情况,去那注册个号,找新上市的,市值小的,屯便是。

         注意也要找一些国内ICO退还的币种
原文地址新浪微博,作者:Ajroc
 

block.one - Statement Regarding Proposed Changes to PRC Law

EOS新闻动态郑浩 发表了文章 • 0 个评论 • 243 次浏览 • 2017-09-04 21:49 • 来自相关话题

September 4, 2017

Prior to the commencement of the distribution of the EOS ERC-20 compatible tokens on the Ethereum blockchain (the “EOS Tokens”) pursuant to a related ERC-20 smart contract (the “EOS Smart Contract”), block.one obtained legal advice from a leading law firm in the People’s Republic of China (the “PRC”) which concluded with reasonable certainty that:

the EOS Tokens do not fall within the definition of “security” as stipulated by the Securities Law of the PRC (as amended); and
the distribution of the EOS Tokens is not considered “illegal fundraising” as defined under the Criminal Law of the PRC (as amended).

While this legal advice continues to be accurate, due to the changing regulatory environment in the PRC with respect to the distribution of cryptographic tokens generally, block.one has decided as a matter of prudence to exclude citizens and residents of the PRC and entities formed under the laws of the PRC (collectively, “Chinese persons”) from purchasing EOS Tokens effective immediately.

Chinese persons are strictly prohibited and restricted from using the EOS Smart Contract and/or purchasing EOS Tokens. If a Chinese person uses the EOS Smart Contract and/or purchases EOS Tokens, such person has done so and entered into the EOS Token Purchase Agreement on an unlawful, unauthorized and fraudulent basis and such agreement will be null and void.

Statement Regarding Mr. Li Xiaolai

block.one also wants to clarify and confirm that the development of the EOS.IO software and the distribution of the EOS Tokens are independent projects of block.one, and Mr. Li Xiaolai is not a co-founder, director, officer, fiduciary, employee, agent or team member of block.one. Furthermore, block.one has not commissioned Mr. Li Xiaolai to act as a spokesperson for the EOS project or block.one in any way, including in relation to the EOS Token distribution.

If you have any questions regarding the foregoing, please contact support@block.one.

Sincerely,

block.one
原文地址:steemit 查看全部
September 4, 2017

Prior to the commencement of the distribution of the EOS ERC-20 compatible tokens on the Ethereum blockchain (the “EOS Tokens”) pursuant to a related ERC-20 smart contract (the “EOS Smart Contract”), block.one obtained legal advice from a leading law firm in the People’s Republic of China (the “PRC”) which concluded with reasonable certainty that:

the EOS Tokens do not fall within the definition of “security” as stipulated by the Securities Law of the PRC (as amended); and
the distribution of the EOS Tokens is not considered “illegal fundraising” as defined under the Criminal Law of the PRC (as amended).

While this legal advice continues to be accurate, due to the changing regulatory environment in the PRC with respect to the distribution of cryptographic tokens generally, block.one has decided as a matter of prudence to exclude citizens and residents of the PRC and entities formed under the laws of the PRC (collectively, “Chinese persons”) from purchasing EOS Tokens effective immediately.

Chinese persons are strictly prohibited and restricted from using the EOS Smart Contract and/or purchasing EOS Tokens. If a Chinese person uses the EOS Smart Contract and/or purchases EOS Tokens, such person has done so and entered into the EOS Token Purchase Agreement on an unlawful, unauthorized and fraudulent basis and such agreement will be null and void.

Statement Regarding Mr. Li Xiaolai

block.one also wants to clarify and confirm that the development of the EOS.IO software and the distribution of the EOS Tokens are independent projects of block.one, and Mr. Li Xiaolai is not a co-founder, director, officer, fiduciary, employee, agent or team member of block.one. Furthermore, block.one has not commissioned Mr. Li Xiaolai to act as a spokesperson for the EOS project or block.one in any way, including in relation to the EOS Token distribution.

If you have any questions regarding the foregoing, please contact support@block.one.

Sincerely,

block.one
原文地址:steemit

EOS第66期众筹价格预测

EOS众筹价格郑浩 回复了问题 • 6 人关注 • 6 个回复 • 643 次浏览 • 2017-09-04 10:05 • 来自相关话题