EOS智能合约从零到一(2)

一、简介

本章节主要介绍钱包、钱包工具和我们安装工具的一些使用方法和对工具的一些了解,以便使我们接下来开发不会遇到问题。

二、了解eos工具

那么我们已经安装好了工具,也下载好了相应的eos生态所需的东西,那么他们是怎么工作的,又是怎么联系到一起的呢?如下图

  • nodeos (node + eos = nodeos) - 这个是EOS生态系统的核心,它可以通过插件的配置来运行一个EOS节点,主要用途是:区块生产、提供API服务,和本地开发环境。
  • cleos (cli + eos = cleos) - 命令行工具,我们可以通过它来和区块链交互,或者用来管理钱包。
  • keosd (key + eos = keosd) - 是EOS钱包用来安全存储EOS私钥的工具。
  • eosio-cpp - 这个之前可能还没接触过,这个是eosio.cdt的一部分,它是用来把C++代码编译成WASM和生产ABI的工具。

eos-8

三、玩转Wallet

1.创建钱包

我们这里开始使用之前安装的工具了,这个我们先看下cleos 都有什么命令:
eos-9
这里我们看到有很多命令,后边有些我们会陆续的说到,其他说不到的,有兴趣的小伙伴可以去了解一下。
今天我们主要用到wallet命令,然后我们查看下wallet的用法。
eos-10
这里边的命令我们都会用到,我简单列一个表,方便copy:

命令使用方式描述展示
cleos wallet createcleos wallet create --to-console/cleos wallet create --file创建钱包,这里需要指定输出方式,输出的密码我们需要记下来,以便以后使用,我这里添加了一个 -n 的参数来指定钱包名称,不指定默认是defaulteos-11
cleos wallet listcleos wallet list列出所有钱包eos-12
cleos wallet opencleos wallet open打开一个存在的钱包,所谓打开,是使用list的时候可以看见。 -n 参数指定钱包名称,不指定默认是defaulteos-13
cleos wallet lock/lock_allcleos wallet lock / cleos wallet lock_all-n参数,锁上指定钱包,或者锁上所有打开的钱包eos-14
cleos wallet unlockcleos wallet unlock-n参数,解锁指定钱包,这时我们要用到之前创建钱包保存的密码,我们可以使用 –password xxxxxxxx 来指定,或者等待后续输入,我们要注意钱包list的区别,发现解锁的钱包右上角会有一个*号eos-15
cleos wallet keyscleos wallet keys可以列出当前所有解锁的钱包的公钥因为现在我们还没创建任何key所以显示是一个空数组**[]**
cleos wallet create_keycleos wallet create_key-n参数,指定key的钱包在哪个,默认是default,然后我们可以使用keys命令来查看eos-16
cleos wallet remove_keycleos wallet remove_key KEY -n WALLET_NAME这里指定了钱包还需要指定key,并且还得输入密码 也可以使用 –password xxxxxxxx 来指定密码,不指定钱包默认是defaulteos-17
cleos wallet importcleos wallet import --private-key PRIVATE_KEY -n WALLET_NAME这里我们指定私钥来导入key,我们使用 -n 来指定导入的钱包,不指定钱包默认是defaulteos-18
cleos wallet private_keyscleos wallet private_keys列出钱包的私钥,我们使用 -n 来指定钱包,不指定钱包默认是default,也可以使用 –password xxxxxxxx 来指定密码eos-19
cleos wallet stopcleos wallet stop(这个我没有用过,一般不会用到)

2.wallet实践

这边我们开始到测试网创建自己的账号,然后导入,为我们后边使用测试网测试打好基础。

  1. Fastest EOS Block Explorer:https://kylin.eosx.io/
  2. 麒麟测试网:https://www.cryptokylin.io/
  3. Jungle 测试网:https://monitor.jungletestnet.io/
    我们使用以上网站就足够了
使用麒麟测试网

麒麟测试网需要和eosx.io配合使用,Jungle单个自己其实就足够了,但是我们使用eosx.io自己其实也就满足了我们大多数的要求。

我们先使用麒麟测试网创建账户,获取 EOS token(这里注意到我说EOS是token,其实EOS是运行在eosio生态系统上的代币,这里没有coin一说,后面我们会讲到eosio.token,大家就会知道了)。

上边两点需要我们关注

  1. 需要替换掉[valid_account_name]为我们的名称
  2. 账户名称需要是12为,并且只允许输入字符 a-z 和1-5

以下信息是我使用麒麟测试网创建账户得到的,我们需要保存下来(如果是主网我们需谨慎保管好私钥,防止丢失和泄漏)。

{
    "msg":"succeeded",
    "keys":{
        "active_key":{
            "public":"EOS5FEdnkyV9Rd61dsgQ5fxrNjyHFX2iK2uFo7CsGfWVV59ebfBMi",
            "private":"5HyeMsoDJi8vJCdnyZuga1JoEWq3nyM71Xb2Mnuv5zugsK6jr4W"
        },
        "owner_key":{
            "public":"EOS7TFLT13QVegchWyich21M8fWXBauRaZLWey3z5oGUkr2r3jEL3",
            "private":"5HsRwxQW4eTt6z6RPjnTVihR9swiFTGcxiCkhhUjBheh87BzxQZ"
        }
    },
    "account":"testforeos11"
}

我们注意到有两个公钥和私钥,这里和EOS的权限系统有关,后续我们会讲到。
下边是我们私用faucet获取的EOS代币
eos-20

我们可以使用eosx.io来查看具体信息,这边有兴趣的可以研究下这个网站,里边有很多东西后续我们可以用到。
eos-21

使用Jungle测试网

Jungle和麒麟测试网不同,需要我们自己来生产公私钥,然后创建账户。
我们在本地生产两个(分别对应上边麒麟测试网中的active_key和owner_key)或者直接使用上边我们麒麟测试网的,我这里直接使用以上两个。
如图
eos-22
下边会有一些详情,我们现在只需关注newaccount就可以了。
我们通过网站头部导航Faucet获取EOS 然后通过Account Info查看账户信息
eos-23

3.创建账户

概念介绍

在eos中账户的概念并非和其他币如ETH的概念一样模棱两可,在这里eos的账户很明确。

以下是官方原文:
eos-24
这是我的翻译:
帐户是一组授权,存储在区块链中,用于标识发件人/收件人。它具有灵活的授权结构,使其可以由个人或组织/部门拥有,具体取决于如何配置权限。需要一个帐户才能向区块链发送或接收有效交易本教程系列使用两个“用户”帐户,bob和alice,以及默认的eosio帐户进行配置。此外,账户还可以为不同的合约来指定。

创建账户
cleos create account eosio test1 EOS7HAsFJgnmfTsKcnYXVba67h6Fg5HZa2c1S3aGAuoxQGGCVx77G
cleos create account eosio test2 EOS7HAsFJgnmfTsKcnYXVba67h6Fg5HZa2c1S3aGAuoxQGGCVx77G

上边的eosio账户是eosio系统的默认账户(具体请查看),我们创建test1和test2是使用eosio账户的默认配置进行初始化的。(创建账户时eosio所在的钱包和当前公钥所在的钱包必须是unlocked状态,也就是右上角有*号)
这里我们需要注意的就是,现在的权限是依赖于eosio生态的,所以我们的本地节点需要启动起来。这里我们将账户和一个公钥关联起来,每一个EOSIO的账户都会关联一个公钥。
eos-25

查看账户相关信息
cleos get account test1

使用以上命令可以查看账户绑定的公钥
eos-26

注意,实际上test1、test2同时拥有所有者和活动公钥。 EOSIO具有独特的授权结构,为您的帐户增加了安全性。 在使用与您的活动权限相关联的密钥时,您可以通过保持所有者密钥不开放来最小化帐户的风险。 这样,如果您的有效密钥遭到入侵,您可以使用所有者密钥重新控制您的帐户。
另外这里是本地环境,所以这里一个账户一个key拥有两个授权,其实我们通过麒麟测试网创建的账户来看,我们可以使用不同的key来绑定不同的授权。来确保我们账户的安全。这就是eos的强大的地方。
eos-27
这里我通过指定API 使用cleos 工具获取麒麟测试网的账户公钥信息,我们可以看到不同的权限绑定在不同的key上。

四、补充eosio

上边有用到eosio的账户,这是一个默认系统账户,也是eosio生态的一个主要的账户,这里我们在本地开发,避免不了使用这个账户,所以我们需要创建一个这个账户,那么我们使用我们默认的值来创建default钱包,并在里边创建一个key,
每一个EOSIO都会有这么一个key,我们称作Development Key。
这里有一个方法导入Development Key(这里会默认导入default钱包,导入时保证默认钱包是unlocked状态),使用一下脚本:

cleos wallet import

然后他会提示我们输入private key:
然后我们可以使用以下私钥:

5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

这里是测试网络使用的,请勿放在主网的节点上!
这边默认的eosio的账户对应的key是EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
但是我们发现使用获取账户名称的时候获取不到…
eos-28

五、使用Scatter钱包

创建网络节点

我们也可以使用Scatter:https://get-scatter.com/钱包工具来查看并管理我们的钱包,我这里使用的是chrome的插件。
我们首先设置我们的节点,点开设置->NetWorks->New 来新建节点信息,填写完成并点击save(保存)
通过访问 http://localhost:8888/v1/chain/get_info
获取到本地节点信息(主要是chain_id)

{
    "server_version":"ea08cfd3",
    "chain_id":"cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f",
    "head_block_num":984839,
    "last_irreversible_block_num":984838,
    "last_irreversible_block_id":"000f07063e914c8d5025bb3bd33fa29eb5bfcf09c6dfb881cd9afe507482cb20",
    "head_block_id":"000f07077dcb7d44e6e0c08e5c0bb76fc111bba2f10fb3584033d237a1c0e287",
    "head_block_time":"2019-01-25T09:18:29.000",
    "head_block_producer":"eosio",
    "virtual_block_cpu_limit":200000000,
    "virtual_block_net_limit":1048576000,
    "block_cpu_limit":199900,
    "block_net_limit":1048576,
    "server_version_string":"v1.5.0"
}

如下图
eos-29

导入私钥

找到Key Pairs->New ,填写私钥,填写一个名称(随意,并非account_name),并点击保存

创建身份

找到 Identities->New,选择我们本地节点,并选择我们导入的key的名称,选择一个权限,这里选择active就行,然后点击import。

测试网络也是以上步骤哦。
具体也可以参考六中的3.Chrome 钱包 Scatter 使用教程https://www.twle.cn/t/503

六、参考文章

  1. eos 开发者:https://developers.eos.io/eosio-home/docs/introduction
  2. EOS.GITHUB:https://github.com/EOSIO/eos
  3. Chrome 钱包 Scatter 使用教程https://www.twle.cn/t/503
1、玩过EOS的都知道,EOS本身更新迭代非常之快,所以有些知识点可能与最新版有所出入,希望小伙伴理解!此文档适用于EOS-v1.0.5以上版本和v1.1.x版本,目前的v1.2.x可能会有极少部分出入,比如eosiocpp工具看更新说明再不用安装的状态下就能使用,目前还未测试。有兴趣的小伙伴可以留言交流。 2、当前文档目录结构介绍: #思考研究问题 1、如何保证EOS中发布的智能合约不被随意篡改? #玩转EOS智能合约代码 #玩转客户端cleos 1、先玩转与智能合约相关的操作 #使用eosiocpp工具编译智能合约生成abi文件和wast文件 #编译合约(无法通过) #安装build/programs下工具 #重新编译合约 #部署合约到账户 #购买RAM #测试调用部署的合约 #更新\升级已经部署过的智能合约(相对空的合约) #更新添加新的函数接口(action)合约 #有关require_auth的合约测试 2、玩转智能合约与数据库相关操作 #参考资料 #持久化API (Multi-Index) 1、一般来讲,对数据库的操作无外乎增删改查 2、表结构示例详解 3、Multi_index定义,建立数据表 4、实例化multi_index 5、操作数据,增删改查 #玩转table表 1、Table表producers 2、Table表global 3、Table表voters 4、Table表rammarket (获取RAM实时价格) 5、Table表refunds (查看账户退款信息) 6、Table表namebids (罗列参与竞拍的账户信息) 3、启动nodeos节点出现脏数据 4、查看账户抵押资产,抵押token,赎回token #查看账户余额(可用余额) #查看SYS货币信息,eosio.token是经营货币的合约 #查看公钥对应账户 #查看子账户(控制账户) #查看账户信息 #查看账户抵押信息 #钱不够那就转账,随便耍 #get transaction无结果了解一下 #卖出RAM(卖给系统账户eosio.ram),字节bytes #抵押token获取CPU和net资源 #赎回抵押token,默认三天后到账,执行后可查看账户状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风华正茂少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值