资讯专栏INFORMATION COLUMN

【EOS】Cleos基础

JerryWangSAP / 1839人阅读

摘要:在进行开发和测试时,可能是手动启动的不是由启动的,最终可能会运行多个进程。然后为了安全考虑,除非合约账户已经被配置这些权限,否则合约无法用是一个虚假的权限,授予合约在此之前,需要一个复杂的具有潜在风险的命令来添加,现在大大简化了。

介绍

cleos是一个命令行工具,它与nodeos公开的REST API接口。为了使用cleos,您需要有一个nodeos实例的端点(IP地址和端口号),还需要配置nodeos来加载“eosio::chain_api_plugin”。

Command Line Interface to EOSIO Client
Usage: ./programs/cleos/cleos [OPTIONS] SUBCOMMAND

Options:
  -h,--help                                   Print this help message and exit
  -u,--url http://localhost:8888/        nodeos运行地址
  --wallet-url http://localhost:8900/    keosd 运行地址
  -r,--header                                 pass specific HTTP header; repeat this option to pass multiple headers
  -n,--no-verify                              don"t verify peer certificate when using HTTPS
  -v,--verbose                                output verbose actions on error

Subcommands:
  version                     Retrieve version information
  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
  net                         Interact with local p2p network connections
  wallet                      Interact with local wallet
  sign                        Sign a transaction
  push                        Push arbitrary transactions to the blockchain
  multisig                    Multisig contract commands
  system                      Send eosio.system contract action to the blockchain.

keosd是由cleos自动启动的。在进行开发和测试时,keosd可能是手动启动的(不是由cleos启动的),最终可能会运行多个keosd进程。当keosd的多个实例在同一台服务器上运行时,您可能会发现cleos命令没有找到正确的键集。要检查keosd的多个实例是否正在运行,以及它们在哪些端口上运行,可以尝试以下方法来隔离使用中的keosd进程和端口:

$ pgrep keosd | xargs printf " -p %d" | xargs lsof -Pani
COMMAND   PID   USER          FD   TYPE                 DEVICE     SIZE/OFF NODE         NAME
keosd   49590 tutorial        6u   IPv4 0x72cd8ccf8c2c2d03     0t0        TCP 127.0.0.1:8900 (LISTEN)
keosd   62812 tutorial        7u   IPv4 0x72cd8ccf90428783     0t0        TCP 127.0.0.1:8899 (LISTEN)
管理节点

config.ini文件中加入plugin = eosio::net_api_plugin,重新启动Nodeos和/或Keosd

列出所有节点
$ cleos net peers -H yournode.host -P yourport
[{
    "peer": "123.456.78.9:9876",
    "connecting": false,
    "syncing": false,
    "last_handshake": {
      "network_version": 0,
      "chain_id": "0000000000000000000000000000000000000000000000000000000000000000",
      "node_id": "0000000000000000000000000000000000000000000000000000000000000000",
      "key": "EOS1111111111111111111111111111111114T1Anm",
      "time": 0,
      "token": "0000000000000000000000000000000000000000000000000000000000000000",
      "sig": "EOS111111111111111111111111111111111111111111111111111111111111111115NsAua",
      "p2p_address": "",
      "last_irreversible_block_num": 0,
      "last_irreversible_block_id": "0000000000000000000000000000000000000000000000000000000000000000",
      "head_num": 0,
      "head_id": "0000000000000000000000000000000000000000000000000000000000000000",
      "os": "",
      "agent": "",
      "generation": 0
    }
  }
  ...]
使用cleos的助手将eosio.code 转换为active权限

当开发合约的时候,你可能需要你的合约有广播inline actions的能力,这时需要用到你合约的 active authority。然后为了安全考虑,除非合约账户已经被配置这些权限,否则合约无法用active authority.eosio.code是一个虚假的权限,授予合约active authority;
在此之前,需要一个复杂的、具有潜在风险的cleos命令来添加yourcontract@eosio,现在大大简化了。

# Adding eosio.code to a contract"s active authority
$ cleos set account permission YOURCONTRACT active --add-code
# Removing eosio.code from a contract"s active authority
$ cleos set account permission YOURCONTRACT active --remove-code


# --add-code 和 --remove-code 在幕后做了什么?
# 在使用—-add-code和--remove-code时,cleos获取帐户的当前权限,并追加从活动权限中删除YOURCONTRACT@eosio.code。
# 建议使用--add-code 工具,而不是下面的命令,因为很容易出错,可能导致帐户被锁定。
$ cleos set account permission YOUR_CONTRACT active "{"threshold": 1,"keys": [{"key": "CURRENT_PUBLIC_KEY(S)_IN_ACTIVE_PERM","weight": 1}], "accounts": [{"permission":{"actor":"YOUR_CONTRACT","permission":"eosio.code"},"weight":1}]}" -p YOUR_CONTRACT@owner

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24519.html

相关文章

  • 区块链平台EOSIO开发智能合约和dapp(一)

    摘要:与传统方式不同,在去中心化的网络及区块链上运行后端代码智能合约。这个博客涵盖了什么在本博客中,我将展示如何设置区块链并开发智能合约。 在我倾听Bettina Warburg的演讲之后,我对去中心化经济(dApps)的概念着迷。传统的Web应用程序是: 前端→后端→数据库 相比之下,dApp网站是: 前端→智能合约→区块链 例如,当你进入电子银行时,网页将调用后端代码来获取你的个人数据并...

    tylin 评论0 收藏0
  • EOS内存即RAM如何买卖

    摘要:多索引数据库是中的一种数据结构,它根据范围的定义方式提供存储数据的灵活性。例如,每个帐户已存储在合约中定义的多索引数据库中的数,该合约由定义范围的每个帐户的一小块组成。 对于EOS RAM的来说什么最重要呢?我们经常在每天的数字货币和区块链相关新闻中看到EOS旁边的RAM这个词,但是无论如何我们应该关注它的价格,为什么要关注它的价格,即使是那些只想深入了解智能合约开发的人也需要这样吗?...

    ShevaKuilin 评论0 收藏0
  • EOS】cleos命令

    摘要:检索与已定义公钥关联的所有帐户。设置或者更新区块链状态创建账户,默认创建默认打开有没有所有解锁钱包的公钥列表。 eos文档 version // 检索客户端的版本信息 $ ./cleos version client convert 打包和解包transaction pack_transaction unpack_transaction pack_action_data unpack...

    tainzhi 评论0 收藏0
  • eos docker运行后无法执行cleos

    摘要:虽然给了安装教程,当然还是用最方便。官方教程了,不过只是想运行的话,也不用,直接在源码的目录下执行就好了,会自动启动两个容器钱包管理组件,负责签名啊啥的区块链节点更新很快,教程更新不及时,截至今天,教程里命令行工具的配置是有问题的。 虽然eos给了安装教程,当然还是用docker最方便。而且现在docker还有阿里云镜像,速度快的不要不要的。 官方教程了https://github.c...

    svtter 评论0 收藏0
  • EOS开发教程-Docker构建EOS环境

    摘要:确认安装成功并且服务启动之后,再继续进行下一步。适用于开发者的定制环境,其中包含编译智能合约需要的相关工具和依赖库。由于我们是开发者,因此我们选用这个。此时也可以通过的请求,直接访问查询分享一个开发视频教程,密码 由于EOS的版本在不断的更新迭代,本地编译最新版本的方式更新比较繁琐,而且容易出问题。 因此,我们推荐使用Docker容器的方式配置EOS本地测试环境,这样方便维护升级,而且...

    omgdog 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<