您正在查看: EOS-新手教程 分类下的文章

部署EOS Mainnet 主网络,并接入eosfans测试网络,成为BP

开始准备EOS项目

  • 获取EOS主网项目代码
    git clone https://github.com/EOS-Mainnet/eos.git
  • 进入eos代码目录,切换当前所需的分支
    git checkout --no-track -b Branch_v1.1.0 Mainnet-1.1.0 --
  • 开始编译
    ./eosio_build.sh
  • 执行安装
    sudo make install
  • 建立链接 避免出现 (更新v1.1.0后,在执行 sudo make install 之后,cleos 等指令还是无效)
    ln -s /usr/local/eosio/bin/nodeos /usr/local/bin/nodeos
    ln -s /usr/local/eosio/bin/cleos /usr/local/bin/cleos

开始配置,接入eosfans测试网络

先运行下nodeos,将会自动创建~/.local/share/eosio/nodeos/config目录和config.ini文件。
修改config.ini中如下内容

//添加
p2p-peer-address = p2p.party.eostea.io:56234
//修改 可忽略
agent-name = "EOS Test Agent"
//如果需要外部eosjs调用的话,修改
access-control-allow-origin = *
//如果需要查看get actions,取消前面注释
filter-on = *
//如果需要返回错误信息,修改
verbose-http-errors = true
//添加插件支持
plugin = eosio::chain_api_plugin
plugin = eosio::history_plugin
plugin = eosio::history_api_plugin
如果需要生产区块,成为BP

继续修改config.ini

//修改BP名
producer-name = 你的节点名字
//修改BP节点名对应的公钥,私钥 (不要用下面现成的,自己去重新生成!!!)
signature-provider = EOS66bcyj8NBeJigeCDqCeYnaJNFZfCZt328yEpHCh7VZKSxed4Cn=KEY:5KHqSSajXUi11wPEWagiWgY51G6mo4zE4FKfrD2tNH9i4PHHVxU
//添加插件支持
plugin = eosio::producer_plugin
下载测试网络对应的genesis.json

切换到~/.local/share/eosio/nodeos/config目录,
新建genesis.json,将(测试网络genesis.json)内容复制到新建的genesis.json文件中,不要用wget直接下载,github会有转向内容不对.

开始准备启动

  • 先清空data目录 (由于开始测试启动时,写入了一些不兼容的数据块)
    rm -rf ~/.local/share/eosio/nodeos/data
  • ~/.local/share/eosio/nodeos/config执行
    nodeos --genesis-json genesis.json

    此时已启动并开始同步区块

开始配置成为BP

  • cleos wallet create 创建一个默认钱包并保存好解锁密码
  • cleos wallet import {Private_Key} 导入上面config.ini中signature-provider配置的私钥
  • 在测试网络中注册config.ini中producer-name配置的账号 (可以联系eosfans创建),并转入一些系统代币
    root@iZj6cgy98yiuluw41gz0aoZ:~/.local/share/eosio/nodeos/config# cleos get currency balance eosio.token bcskillsurou EOS
    20000000.0000 EOS
  • 将系统代币抵押给自己 (常见问题
    root@iZj6cgy98yiuluw41gz0aoZ:~/.local/share/eosio/nodeos/config# cleos system delegatebw bcskillsurou bcskillsurou '10000000.0000 EOS' '10000000.0000 EOS'
    2018-07-20T12:20:56.591 thread-0   main.cpp:438                  create_action        ] result: {"binargs":"a0129ddec45aab49a0129ddec45aab4900e876481700000004454f530000000000e876481700000004454f530000000000"} arg: {"code":"eosio","action":"delegatebw","args":{"from":"bcskillsurou","receiver":"bcskillsurou","stake_net_quantity":"10000000.0000 EOS","stake_cpu_quantity":"10000000.0000 EOS","transfer":false}} 
    executed transaction: ed7bfc3787629ae9fd27c8ef2a51440a2f89717a4e442e5c5588184ce7664c4b  144 bytes  1798 us
    #         eosio <= eosio::delegatebw            {"from":"bcskillsurou","receiver":"bcskillsurou","stake_net_quantity":"10000000.0000 EOS","stake_cpu...
    #   eosio.token <= eosio.token::transfer        {"from":"bcskillsurou","to":"eosio.stake","quantity":"20000000.0000 EOS","memo":"stake bandwidth"}
    #  bcskillsurou <= eosio.token::transfer        {"from":"bcskillsurou","to":"eosio.stake","quantity":"20000000.0000 EOS","memo":"stake bandwidth"}
    #   eosio.stake <= eosio.token::transfer        {"from":"bcskillsurou","to":"eosio.stake","quantity":"20000000.0000 EOS","memo":"stake bandwidth"}
    warning: transaction executed locally, but may not be confirmed by the network yet    ] 
  • cleos system regproducer {producer-name} {public key} http://{{server}}.com //申请bp
    root@iZj6cgy98yiuluw41gz0aoZ:~/.local/share/eosio/nodeos/config# cleos system regproducer bcskillsurou EOS8H6rzgwpV2KD5AtiDMZLQWw6nDxWaV6jGc7rVY8sHfFuJZjCq4 http://bcskill.com
    2018-07-20T12:36:19.839 thread-0   main.cpp:438                  create_action        ] result: {"binargs":"a0129ddec45aab490003be6e9ef6503430e4c80a2cd52149d2b7b9330d92c2cea4a839632f94ced75daf10687474703a2f2f64617070702e636f6d0000"} arg: {"code":"eosio","action":"regproducer","args":{"producer":"bcskillsurou","producer_key":"EOS8H6rzgwpV2KD5AtiDMZLQWw6nDxWaV6jGc7rVY8sHfFuJZjCq4","url":"http://dappp.com","location":0}} 
    executed transaction: 91df9e3e6e27708ab803ee6da121c2ddd7845fef5f76145dbfd618937ecee5e5  160 bytes  1130 us
    #         eosio <= eosio::regproducer           {"producer":"bcskillsurou","producer_key":"EOS8H6rzgwpV2KD5AtiDMZLQWw6nDxWaV6jGc7rVY8sHfFuJZjCq4","u...
    warning: transaction executed locally, but may not be confirmed by the network yet    ]

需要等主网启动后,才会出块。

EOS v1.1.0 开启eosio::mongo_db_plugin 支持

今天更新了 v1.1.0 主线已经支持了eosio::mongo_db_plugin (EOSIO 1.1.0 Release Notes)

v1.1.0之前的版本请参考 (EOS enable mongodb

  • eos代码更新到 v1.1.0分支,编译代码。
  • 修改config.ini配置文件,添加如下两行:
    plugin = eosio::mongo_db_plugin
    mongodb-uri = mongodb://localhost:27017/eosmain

    其中,eosmain是要写入的MongoDB数据库名。

好了,万事俱备,开始启动
进入~/opt/mongodb/bin目录,启动MongoDB服务。

cd ~/opt/mongodb/bin
./mongod

服务启动和关闭mongodb命令如下:

service mongod start
service mongod stop

这时MongoDB服务会默认监听27017端口,如下图所示。


新开一个小窗,重启nodeos,需要加上-–replay-blockchain,以使历史交易数据同步到MongoDB。

如果没有意外的话,此时MongoDB应该开始写入相关记录了。

执行mongo程序(sudo apt-get install mongodb-clients)进入MongoDB控制台,查询相应数据库和记录,如下图。


EOS Configuration 参数详解

Eos = require('eosjs')

// Default configuration (additional options below)
config = {
  chainId: null, // 32 byte (64 char) hex string
  keyProvider: ['PrivateKeys...'], // WIF string or array of keys..
  httpEndpoint: 'http://127.0.0.1:8888',
  expireInSeconds: 60,
  broadcast: true,
  verbose: false, // API activity
  sign: true
}

eos = Eos(config)
  • chainId hex - 您要连接的区块链的唯一ID。这是有效交易签名所必需的。chainId通过 get_info API调用提供。通过其初始起源块识别链。签署的所有交易仅对具有此chainId的区块链有效。出于安全原因验证chainId。
  • keyProvider [array<string>|string|function] - 提供用于签署事务的私钥。如果找到多个私钥,get_required_keys则调用API 以发现要使用的签名密钥。如果提供了函数,则为每个事务调用此函数。
  • httpEndpoint string - 提供链API的nodeosd服务器的http或https位置。从浏览器使用eosjs时,请记住在nodeosd或代理服务器中配置相同的源策略。对于测试,access-control-allow-origin = *可以使用nodeosd配置。对于冷存储(无网络)配置,请将此值设置为null。
  • expireInSeconds number - 事务到期前的秒数。时间基于nodeosd的时钟。可能出现错误的未到期交易是到期日到期之前的责任,此时间应该是短暂的。
  • broadcast [boolean=true]- 将交易发布到区块链。使用false获取完全签名的事务。
  • verbose [boolean=false] - 详细日志记录,例如API活动。
  • debug [boolean=false] - 低级调试日志记录(序列化)。
  • sign [boolean=true] - 使用私钥签署交易。保留未签名的交易避免了提供私钥的需要。
  • mockTransactions(高级)
    • mockTransactions: () => null // 'pass', or 'fail'
    • pass - 不要广播,总是假装交易有效
    • fail - 不要广播,假装交易失败
    • null|undefined - 照常广播
  • transactionHeaders(高级) - 手动计算事务头。这可能是提供的,因此eosjs不需要对nodeos进行与头相关的API调用。用于冷藏等环境。每个事务都会调用此回调。这里记录了标题eosjs-api#headers
    • transactionHeaders: (expireInSeconds, callback) => {callback(null/*error*/, headers)}
  • logger 默认日志记录配置。
    logger: {
    log: config.verbose ? console.log : null,
    error: console.error // null to disable
    }

    关闭所有错误记录: config.logger = {error: null}

EOS RAM 相关知识

李嘉图合同 - 关于区块链的具有法律约束力的协议

Live Contracts的想法一直挥之不去。以现存的李嘉图合同概念为例,它非常相似。李嘉图的合同源于20世纪90年代中期区块链技术和加密货币专家Ian Grigg所做的早期工作。

什么是李嘉图合同?

李嘉图的合同被认为是将合法有效和数字连接的文件注册到某个对象或价值的一种方式。Ricardian合同将法律文件中的所有信息以可由软件执行的格式放置。这样,它既可以是协议,也可以是在数字基础设施内安全地集成协议的协议,同时由于加密识别而提供高级别的安全性。

像普通的文本文档一样阅读

因此,李嘉图的合同对机器和人都是可读的。机器在数字基础设施中读取合同,人们将其作为纯文本文档阅读。这允许合同的所有各方正确处理其中所提供的信息。这种类型的合同将计算机语言与常规语言交织在一起,使交易成本更低:它可以有助于更快地解决争议,并且协议可以更容易地执行。

李嘉图合同的目的是什么?

李嘉图合同及其区块链技术的一个特点是其透明度。欺诈的风险可以保持在最低限度,因为使用加密哈希来完成特定数据的出版和参考。因此,代表金融交易(例如支付)的文件的数字化将在不久的将来变得越来越普遍。

李嘉图合同的定义

在20世纪90年代中期,Ian Grigg为数字资产运输的数字基础设施做出了重要贡献。这种模式被称为“里卡多”(以英国经济学家大卫里卡多的名字命名),由Systemics Inc.开发,这是一家专门从事金融交易,电子支付和密码学的美国公司。李嘉图的合同可以描述为:
“由发行人向财产所有人提交的单一文件形式的协议,其中所有者的所有权由文件的发行人管理。该文件必须清晰易读,就像传统的纸上合同一样。此外,协议必须通过程序和软件清晰可读,并使用数字密钥和服务器信息进行数字签名,并结合独特而安全的识别方法“。

英国经济学家大卫里卡多1772-1823

交易的发行和执行之间的严格分离

李嘉图的合同形成了立法与哈希函数创建的数字世界之间的联系。作为协议一部分的所有规则和条件都包含在合同中。在这样做时,交易问题及其执行是严格分开的,这反过来又有助于安全。李嘉图的合同规定了代理方之间达成的协议,因此这些方控制的程序可以执行本协议。

参考李嘉图合同的哈希值

该优惠以常规数字签名签署。通过同意涉及该合同散列的交易来接受合同。如果它涉及支付系统,则安全支付将参考该合同的散列,但也指付支付方和接收方。这种付款可以通过人工交易完成,但也可以通过智能合约进行。通过智能合约,交易的接受将基于智能合约代码进行。

隐藏的签名

有关各方签署的李嘉图合同是通过私钥完成的。合同提供者的签名被添加到文档中,该文档针对文档中描述的信息(例如属性)创建具有法律约束力且易读的提议。如果各方稍后参与李嘉图合同(例如,如果他们想要付款),则从签名的原始文档中覆盖加密“散列识别方法”。使用协议的哈希确保隐藏的签名附加到合同。

李嘉图合同和智能合约有什么区别?

智能合约是指已经达成一致且可以自动执行的一种数字协议。李嘉图合同是一种合同模型,用于记录合同的“意图”以及与合同相关的所有“行动”,甚至在合同执行之前。使用引用外部文档的哈希,Ricardian契约也可以轻松引用代码。毫无疑问,李嘉图的合同与未来的智能合约之间会有更多的交叉,交易可能会在不同的混合形式的基础上进行。

李嘉图的合同可以用于什么?

李嘉图合同可用于任何类型的协议。与智能合约不同,它不仅限于在诸如金融交易之类的简单情况下使用。李嘉道的合同用于确定代理方与另一方交易时的责任(责任)。合同代表某些商品或服务的单位。李嘉图的合同使用双方签署的协议,一旦签订合同,就不能伪造。

BowTie图

李嘉图的合同将各方之间的协议划分为时间和领域,并使用所谓的“BowTie图”。该图表以清晰的时间表显示某些风险。BowTie图表涉及谈判和起草具有法律约束力的合同,并明确了合同的所有目标。

立法

合同自动化的新解决方案可以成功,因为它们解决了法律实践中的实际问题。该技术仍处于全面发展阶段,其法律框架滞后。然而,在现有的立法框架内,李嘉图的合同已经可以接受。

LegalThings One是运行实时合同的平台。Token预售将于2017年12月6日开始。请访问livecontracts.io了解更多信息。

©与Ricardian合同相关的所有版权属于Systemics Inc.的I. Griggs先生。欲了解更多信息,请访问他的网站http://iang.org/并阅读他的白皮书http://iang.org/papers/ricardian_contract。 HTML

英文原文:https://medium.com/legalthingsone/ricardian-contracts-legally-binding-agreements-on-the-blockchain-4c103f120707