2024-11-03 02:08:05
区块链的数据存储方式其实就是“区块”+“链”。这就好比我们的日记本,每一页都是一张纸,纸上可以记录有用文字信息,但每一页都会有页码,记录每页文字所处的顺序。对比来说,区块就是“纸”,用来记录创建期间发生的所有价值交换活动。页码就是“链”,按照时间先后顺序将区块存储在数据库中。
EOS开发入门5--账户与钱包在开始所有之前,先确定已经完成了前面文章的内容。
EOS开发入门1--环境搭建
EOS开发入门2--钱包与账户
EOS开发入门3--合约部署与调用
EOS开发入门4--开发第一个合约
下图描述了EOSIO钱包和账户的简单概念视图。
钱包(wallet)就是一个存储结构,这个结构用于存放秘钥对,每个秘钥对中包含了一个公钥和一个私钥。公钥和私钥是一一对应的关系,私钥对数据做签名,公钥可以对签名后的数据做验证。
钱包和其中的内容由keosd进行管理。通过命令行工具cleos可以访问钱包。
账户(account)是链上的一个标识符,这个标识符与一组访问权限相关联。nodeos管理区块链上的账户和发布账户的相关操作。nodeos的账户管理功能也可以使用cleos来操作。
账户和钱包之间并没有固定关联,钱包并不知道账户,账户也不知道钱包的存在。相对应的,nodeos和keosd之间也没有内在关联,上图中很明确的反应了这个关系。
当需要对数据做签名时,比如需要对某个交易做签名。秘钥被加密存储在钱包中,并且钱包可被锁定,钱包的存在便于在不暴露私钥的情况下,安全的获得数据签名。cleos有效地充当了钱包管理工具keosd和需要秘钥对数据进行签名的nodeos之间的中介。
首先做的第一件事情是创建钱包。如果之前已经将eos的相关可执行命令导入到了/usr/local/bin下,在任意目录都可以执行以下命令,如果没有就导航到eos的源文件目录:
使用cleos的子命令walletcreate创建默认钱包default:
返回的字符串就是钱包的主密码,做好保存。如果是按照前面章节过来的,这里会报错,因为default钱包已经存在了。钱包的文件名是default.wallet,路径可以通过两种方式配置,命令行参数--data-dir或者在config.ini配置文件中的wallet-dir进行配置。
cleos可以管理多个钱包,每个钱包都有独立主秘码。下面使用-n参数来创建一个指定名称的钱包:
为什么钱包的名字叫periwinkle呢,我也不清楚,官方文档这么定义的。
然后我们可以查看下已经创建的钱包:
每个钱包后的*号很重要,这表示这个钱包处于解锁状态。为了方便使用,walletcreate命令创建的钱包默认处于解锁状态。我们来把第二个钱包periwinkle做锁定操作。
解锁钱包我们可以使用两种方式,--passwordMASTER_PASSWORD,直接在命令行中附上密码,或者不带--password参数,手工输入密码,命令:
当keosd重启后,是看不到钱包列表的,这时需要使用cleoswalletopen打开default钱包,或者使用-n参数打开指定名称的钱包。然后再解锁钱包,才能再次使用。
只是一个空的钱包,对我们并没有用。我们需要生成秘钥对,并将其保存到钱包中。
生成EOS秘钥对有很多方式,这里我们使用cleoscreatekey命令:
我们创建两个新的秘钥对,这两个秘钥对并没有任何权限。接下来,我们把秘钥对导入到钱包:
现在可以查看下已经导入的秘钥对
cleos下帐号相关的子命令
追踪和管理数字资产新姿势,教你学会查看区块链账单
账单记录价值流通和状态,是金融服务的基础功能。
我们常用的银行、支付宝、微信支付等都会为普通用户和商家记录一笔交易,提供不同维度的查询、统计和分析服务。
比如大家爱晒的支付宝年度账单,会统计用户全年的总收支、消费种类、余额宝和其他理财收益、点外卖的次数等。通过大数据技术,展示各个地域,不同年龄段的消费兴趣和趋势,让消费者更了解自己周边的消费环境,商家能够及时把握市场需求。
在去中心化的区块链网络里,交易被永久的记录在链上,公开透明,人人可查。
但是由于区块链的设计更倾向于保证不可篡改和数据压缩需求,导致业务层面的过滤查询功能缺失。加上不同链的规则不同,追踪和管理加密资产变的异常困难。这也是为什么数字资产投资者常常感叹“总觉得帐没算明白“的原因所在。
SixPencer推出全新区块链记账神器,目前已支持比特币(Bitcoin)和以太坊(Ethereum)底层的资产追踪和管理,免费使用,无需注册。
一经推出,受到了包括矿工、资管机构、OTC商户、加密创业公司、数字资产投资者的喜爱。
作为专业的资管工具,不仅能够查询所有链上交易记录,实时查看账户余额和持有资产,而且提供每日各币种收支情况、支持单或多地址聚合收支统计、地址画像分析和图表、大额交易记录排行、联系人管理等。
进入网站后,在首页搜索框,输入比特币或以太坊地址,点击搜索即可进入该地址的总览页面。
我们以目前ETH持有量全网排名第一的地址:0x742d35cc6634c0532925a3b844bc454e4438f44e(标签:bitfinex1)?账户作为demo账户进行演示,所有数据均为真实链上数据。
这里简单介绍下区块链上的地址和银行账户的区别。在区块链上,地址就类似于银行卡号,知道地址就等于知道银行卡号一样,可以向其转账。
但不同的是,区块链是不可篡改的分布式公开账本,通常具有匿名性,任何人可以对任何地址进行公开查询。银行账户只能查询本人的账户信息,无法通过银行卡号得知其他人的账户信息。
如果用户有多个地址,或者想追踪其他地址,均可以通过搜索,所有搜索过的地址信息会在资产组合页面进行汇总,点击下拉框即可切换或者删除账户。
SixPencer除包含区块链浏览器提供的基础信息外,添加展示了一些个性化的指标,帮助用户了解自己的链上画像,也可以追踪其他账户的链上轨迹。在下面总览页面可以查看地址的资产概览、历史指标、收支统计、持有资产信息。
地址概览
创建时间:第一次收到ETH的日期
净资产:所有资产,包含ERC20token资产的合计美元价值
ETH排行:持有ETH数量在所有以太坊地址中的排名
ETH余额和估值:持有的ETH数量和其对应的美元价值
历史指标
历史指标展示交易量、交易次数、代币分析和联系人分析四大维度。通过统计,算不清的糊涂账终于能算清了,比如最简单的会计计算,ETH总收入=ETH余额+ETH总支出+ETH总手续费。再比如总交易次数=转入交易次数+转出交易次数。
由于以太坊网络的特殊性,所有转账的手续费都是以ETH支付。因此我们将手续费单独罗列出来,在交易明细中也支持手续费单独筛选,帮助用户统计手续费支出。
一些有趣的数据,demo账户手续费支出为1.1556ETH,ETH单笔大额转账达90万个ETH,持有代币数量有350种,交易次数最多的代币是USDT,与其交易过的地址仅37个。
一般持有上百种不同资产的地址通常都是交易所地址,加上交易次数和联系人并不多,可以排除是对外地址,基本可以判断是bitfinex交易所内部使用地址。
收支情况
统计了本月全部资产合计收入和支出,支出包含手续费支出。
持有资产情况
展示持有的资产数量、价值、资产价格和24h涨跌幅。demo账户这类交易所的地址,持有资产通常10页都放不下。
SixPencer除了提供地址的交易流水外,还支持全历史交易记录查询和筛选、余额信息、日收支统计等。
交易明细
从下面页面可以清晰得知ETH资产的本月收支情况,用户还可以根据日期,资金流向、交易分类和标签系统进行筛选,根据自身需求进行更细致的统计,后面会介绍如何进行指定地址的交易筛选。
点击上图中的ETH下拉框,可以切换到其他币种的交易详情页面,比如切换到USDT的交易详情查看USDT的明细状况。
除月账单外,SixPencer展示每笔交易的交易明细,提供交易方向、交易对手方、交易金额、账户余额、交易时间、每日收支情况等信息。下图可以看到近6笔ETH交易均为从bitfinex3账户转入bitfinex1的交易。
交易详情
点击任意一笔交易明细,即可进入该笔交易的交易详情页。交易哈希是每笔链上转账都有的唯一不可篡改的交易ID,类似于订单号的概念。
通过交易哈希就可以查询到一笔交易的具体信息。
下面所展示的交易数量、交易状态、交易时间、发送和接受方、手续费等都是这笔交易的具体信息,在这里不再赘述。值得注意的是,SixPencer提供个人标签和备注系统,用户可以对单笔交易,进行个性化分类和备注,帮助记忆,不遗忘每一笔交易。
如何快速找到和指定地址的交易信息?
时间变久,交易变多后,查询链上指定交易信息就变得异常复杂和困难,SixPencer将交易信息按照业务需求进行细化,并提供标签系统辅助用户进行自定义交易查询和统计。
比如想要查询2020年6月地址0x876eabf441b2ee5b5b0554fd502a8e0600950cfa(标签:bitfinex3)一共向demo账户转入了多少ETH。通过我们的账单系统,仅需两步操作即可查询。
1、打标签:为了演示,我们将“bitfinex3“这个标签重命名为“测试test”。
2、筛选:将日期筛选为6月1日-6月30日,在筛选栏选中“转入”,并在最下面的标签栏选中“测试test”,点击保存。
保存后即可搜索出所有6月“测试test”转入到demo账户的交易信息,从下图可以看出6月份,demo账户共从标签为“测试test“的地址收到58,440.2489个ETH。
如果用户想查询和多个指定地址的交易,选中多个标签后,调整日期、资金流向等信息即可进行资产的自动统计。
在分析一栏,用户可以查询地址不同维度的图表分析信息,包含余额、交易、分类和排行四大维度。分别点击各维度还能够查看更多详细数据和图表。
余额:余额展示资产的余额数量和价值走势
交易:交易展示全部交易、转入和转出的交易数量、交易数量价值和交易次数走势
分类:分类根据平台地址标签系统对交易类型进行统计,反应地址的交易偏好
排行:排行按照交易次数展示活跃联系人,按照交易金额展示大额交易
比如排行分析,能够很快查看与某个地址的具体交易金额和大额转账情况。如下图,demo账户与标签为“测试test”的地址在本月一共交易了177次,其他与demo账户交易较多的都是ERC20Token合约调用交易。
从下图看,大额排行也都是与标签为“测试test”的地址交易信息,表格展示交易对象、交易时间、交易方向、交易数量和价值。对交易所大户感兴趣的,可以查询交易所地址的大额转账信息,看看哪些地址都是充提大户。
通讯录展示所有和demo账户有过交易记录的地址,除平台自带的标签体系外,用户可以对地址添加标签或者重命名标签。
标签:展示平台标签系统已知标签和用户自行添加的标签
最近联系人:展示最近30天有过交易记录的地址/标签
全部联系人:展示所有有过交易记录的联系人地址/标签,交易数量超过1万笔的地址,取最近1万笔交易的联系人展示
综上,SixPencer的全新资产追踪和管理工具能够提供比区块链浏览器或者钱包更综合的查询和分析功能,作为一款工具产品意在辅助用户进行数字资产管理,通过对链上用户画像的进一步解析,帮助大家更好的决策。
我们认为区块链的公开透明机制应该让数据查询更简单,但目前按照实际业务需求快速查询区块链数据仍然是难点痛点,并成为商业落地的一大阻碍。
数字资产交易仅仅是其中一小块,未来还将有大量有价值的数据存储在区块链上,SixPencer将继续推出更多实用工具,让数据更好为业务服务。
EOS智能合约开发前准备——账户和权限管理在说智能合约开发前先说这个,因为所有对智能合约的操作都是建立在账户和权限管理的基础上的。
先说下几个概念:
钱包是存储密钥的客户端。密钥可以与多个账户权限相关联。钱包本身受密码保护。
cleos可以使用wallet相关命令。
帐户是存储在区块链中的可读名称,需要账户才能将交易转移或以其他方式推送到区块链。而对它的各种操作取决于具体的权限配置。
同样的,cleos可以使用account相关命令。
原生权限:
owner?可以对账户进行任何操作,包括变更账户所有权。只有少数交易需要用到这个权限。
active?用于转移资金,投票或别的高等级更改。
自定义权限:
开发过程中有原生权限就能满足需求了,不深入展开。
1.启动单节点测试网络
nodeos-e-peosio--plugineosio::wallet_api_plugin--plugineosio::chain_api_plugin--plugineosio::account_history_api_plugin
2.创建钱包
cleoswalletcreate
创建默认钱包default,加-n参数可以指定钱包名称?密码注意保存
3.打开钱包
cleoswalletopen
刚创建的钱包是默认已打开,下次启动nodeos时需要打开指定钱包?加-n参数可以指定钱包名称
可以使用cleoswalletlist查看钱包列表。
4.解锁钱包
cleoswalletunlock--passwordxxxxx
刚创建的钱包是默认已解锁,下次启动nodeos时需要解锁。
生产环境不建议添加--passwordxxxxx,等提示输入时再手动输入。因为密码会留在命令行的历史记录增加隐患
5.创建公钥和私钥
cleoscreatekey(刚创建的钱包默认生成一个公钥和私钥,你也可以直接使用)
6.导入公钥和私钥到钱包
cleoswalletimport你的私钥
可以使用cleoswalletkeys查看已解锁的钱包中的公钥和私钥列表。
7.创建指定账户,并用公钥进行权限关联
cleoscreateaccount创建者账户名生成的新账户名Owner权限公钥Active权限公钥(系统内置了一个特殊账户eosio,当没有一个账户时,可以用它当作创建者账户名)
可以使用cleosgetaccounts你指定的公钥?查看指定公钥对应的账户列表。
以上便是账户和权限管理的部分了,相关的命令你可以封装成shell脚本,方便以后的开发。用账户来操作智能合约将在下一章展开。