一、区块链账户怎么管理(区块链权限管理)
区块链中的账户管理的技术原理是什么了?
区块链的数据存储方式其实就是“区块”+“链”。这就好比我们的日记本,每一页都是一张纸,纸上可以记录有用文字信息,但每一页都会有页码,记录每页文字所处的顺序。对比来说,区块就是“纸”,用来记录创建期间发生的所有价值交换活动。页码就是“链”,按照时间先后顺序将区块存储在数据库中。
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脚本,方便以后的开发。用账户来操作智能合约将在下一章展开。
二、区块链代币怎么发行,dai区块链
手把手教你发行代币
目前,应用最广泛的代币(区块链货币)是在以太坊上发行的ERC20代币。ERC20可以看做是一个智能合约。这个智能合约能追踪谁拥有多少该代币,并包含一些代币转移函数。如果你写的代币智能合约符合ERC20的标准,你的代币则被称之为ERC20代币。
很多类似的ERC20的概念,当你只听人们谈论它们的时候,会觉得很复杂。其实最简单的理解方式就是你自己来实现它。
一个ERC20代币是一个智能合约,合约里记录了账户代币余额数据和转移代币的方法函数。在以太坊上部署智能合约之前,可以在测试环境中测试智能合约。有一些以太坊测试网络可以使用,我们这次发币实验选择Rinkeby网络。
1、在Chorme浏览器的metemask钱包中,选择rinkeby测试网络。
在Facebook中发一条Post,内容为收币地址,也就是metamask钱包的账户地址。post设置为公开。右击发文时间,复制链接,填入RinkebyFaucet中。选择借3个ETH,使用期8小时,等待一会就可得到这3ETH。
在metamask钱包中也可以看到这笔ETH到账了。
3、钱和钱包都有了,下面开始编写发币智能合约,我们选择Remix在线开发平台。ERC20代币有大量案例可以参考,直接借用嘛。
编译智能合约后,Run让它飞起来。
这里要填写一些配置信息,Environment运行环境选“Web3”,因为我们用的是metamask钱包;Account账户填写metamask钱包账户;Gaslimit交易费上限,这个多填写一点没关系,测试网络里不消耗真实费用;Value合约转账金额,这里是0Wei;选择HayekToken智能合约;填写发币信息(合约构造函数的输入参数),发币数量21000000(和比特币一样,向中本聪致敬),货币名称HayekToken,最小货币单位0(decimaUnits),货币简称HYT。
填完了配置信息,点“Create”,合约就跑起来了。接着metamask钱包跳出来了,需要我们确认“交易”,点击“Submit”。
4、验证
智能合约发布后,Remix中出现了智能合约地址:0x6564a2b9384e03ada0496401360fe17a4d376bda
也可以查看账户余额,注意账户输入时要加“”,点击“balanceOf”
可以看到2100万的HYT在我的账户中。
在metamask钱包中添加Token,也可以看到这笔代币。
发币成功!
区块链代币发行很简单,和其他代币,比如Q币有什么不同呢?
代币充当的是专有领域的流通媒介。Q币可以购买腾讯的虚拟服务,游戏币可以抓娃娃,食堂餐牌可以打饭打菜。普通代币(Q币、游戏币、餐牌)和区块链代币(ERC20)有什么区别呢?核心的区别其实不是中心化和去中心化的区别,而是能否自由兑换的区别。Q币只能在腾讯的平台用法币充值,但不能把Q币兑换成法币。游戏币只能抓娃娃,不能买零食。餐牌只能在食堂内使用。而区块链代币可以在交易所兑换成另外一种代币,也能在场外兑换成法币。
这一点区别就产生了巨大的不同,区块链代币能自由交易,就形成了交易市场,就有波动,有金融属性。庄家币、传销等骗局利用区块链代币金融属性大肆敛财。各国为了保护小投资者(不合格投资者),对区块链代币采取不同程度的监管。
这些类比其实非常不准确,因为引入了区块链代币,引入了激励机制,这些应用中投资者和用户是一体的。也就是说引入代币激励后,持有代币就成为股东,股东当然期望这款应用广泛普及,甚至为应用做出贡献,待代币升值获得利益。同时,持有token也是用户,可以使用代币购买应用服务,甚至租赁代币给别人。这就让引入代币激励的应用和普通应用截然不同,虽然普通应用也可能有积分奖励,但积分不能自由流通,不能随意换钱。
建立在区块链代币上新的生产关系正在产生,你也发个币试试。
区块链项目如何发币?看这篇就够了
对于Token,每个人有不同的理解和用法,我们通常是以区块链技术来思考
Token,在初级区块链发展的阶段,你可以简单的将Token理解为现实生活当中
的“积分”或“虚拟货币”比如加油站洗车店会员卡积分,楼下理发店让你办的
冲2000送1000的美发会员卡,幼儿园老师给小朋友的小红花……主要是以激励为?
主的一种虚拟的、在某一范围内普遍承认的虚拟货币,你可以用当时我给你的
Token来置换我的某些物品或等价货币。
在以太坊ERC20出现后,Token进入了第二阶段。作为募集以太币的凭证,可以在
交易所交易,实现实现ICO流程的自动化。
在通证这个翻译诞生后,我们对Token的认知进入了第三阶段。Token的内涵被进
一步扩大化,Token不再局限于令牌或者ICO代币,还具有使用权、收益权等多种
属性,区块链加密技术可以保障所有不可篡改的符号都可以作为通证,即:具有
了专属使用权,当它的专属使用权放在价值网络当中兑换成通用使用权后,才可
进一步流通;也就是在该阶段Token经济才有发展的可能。
现在,国内Token的发展阶段普遍在第二阶段,虚拟币的一级市场已经被玩烂,很
多人争先恐后的去发区块链项目,找人才,建团队,撰写区块链项目白皮书,找
行业大佬站台,做社群活动,组建社群,然后去交易所发自己的Token。而做个币
只要0.2ETH,在交易所发行后,只要有足够多的人认购你的Token,瞬间就变成了
成千上万的ETH,韭菜也就轻松收割了。
温馨提示:发币本身不属于融资行为,币可以单纯作为一个项目生态内
循环的存在。只有发币后公开ICO才属于融资行为,我国明确禁止ICO,
发币融资(ico)已经是非法行为。
那么,具体的发币流程有哪些呢?今天我就带来一个干货!教你如何用智能合约
发行自己的虚拟币,也就是Token。
现在我们发一个币相对比较容易,这一切就要归功于ERC20协议,作为以太坊的
协议之一规定了代币合约的基本架构,遵守ERC20协议的任意一种代币都可以在其
他应用(钱包,交易所等)中使用。有了ERC20协议,我们就不需要重复开发代币
基础功能,极大降低代币开发的门槛,让开发者可以将代币应用到更多领域,发
起更多ICO项目;更方便的是,由于不同ERC20代币都兼容ERC20协议,这样
两个ERC20代币之间就能够进行交易。
币安链上怎么发币1、进入区块链浏览器:
2、输入合约地址,搜索目标合约
该tab页下的Code、ReadContract都不需要连接钱包,只有WriteContract需要连接钱包。
3、选项WriteContract页签,连接metamask钱包
metamask钱包连接成功后:
点击Write按钮后会弹出metamask钱包,提示需要消耗BNB,授权确认消耗BNB即可。
执行完成后,区块链浏览器上可以查询到执行结果。
发币完成后必须开源合约,并且验证合约代码完全匹配ABI和bytecode。因此需要上传代币的相关信息到BSC区块链浏览器上,包括:合约名称、编译器版本、license、构造函数参数等。
以下为开源合约代码的操作步骤:
1、发币完成后记录合约的transactionhash:0x545fa6f1cf9b2a77db4f4b7727c4fa996b55086182ea1fe03204b13057843f9c
在BSC区块链浏览器上查询该hash详情:
代码的合约地址为:0xd04798e39236b9d2e5356533788cbb65f847d91685
2、BSC区块链浏览器上查看合约详情
进入合约详情页面,选择contractTAB页签
3、点击“VerifyandPublish”上传代币信息到BSC区块链浏览器
4、选择合约创建时相关的信息,填写如下表单
I、合约地址是自动带出来的
II、编译器类型选择:如果合约代码是由多个文件组成的就选择:Solidity(Multi-Partfiles),如果是单个文件的合约就选择:Solidity(Singlefile)
III、编译器版本:要根据合约代码中的编译器版本确定,必须和合约代码编译时的版本保持一致。本示例合约编译时版本为:pragmasolidity^0.6.12,因此此处选择V0.6.12+commit.27d51765
IIIV、license授权类型:合约代码中是MIT授权,此处选择MIT即可,这个地方实际上可以随便选择。
5、以上信息配置完成后,上传合约代码文件
选择组成合约代码的所有文件,点击“ClicktoUploadselectedfiles”
点击“ClicktoUploadselectedfiles”上传合约代码文件到区块链浏览器,上传完成后截图如下:
6、继续选择后面的配置信息,完成合约代码开源
构造函数传入参数是合约部署时输入的,确认没有问题即可。
本示例没有调用合约类库,因此合约类库地址可以不填。
三、***ETH钱包开发04***web3j转账ERC***20***Token
在上一篇文章中讲解了ETH转账,这一篇讲一下ERC-20 Token转账。
【ETH钱包开发03】web3j转账ETH
1、直接用web3j的API
2、java/Android调用合约的 transfer方法
不管用哪种方式来转账,你都需要先写一个solidity智能合约文件来创建ERC-20 Token,然后部署合约,最后才是通过客户端来调用。
注意:erc-20 token转账和eth转账的区别如下:
1、erc-20 token创建交易对象用的是这个方法 createTransaction
2、erc-20 token需要构建 Function,它其实对应的就是erc-20 token合约中的那些方法。它的第一个参数就是ERC20中那几个方法的名称,第二个参数的话就是对应合约方法中的参数,第三个参数是和第二个参数对应的,按照我那样就行了。转账的话就是 transfer,我们从合约的 transfer可以看到第一个参数是收款地址,第二个参数是金额,所以 Function这里对应起来就好。
这种方法不需要使用web3j封装的方法,而是直接调用solidity合约的方法。
步骤
1、web3j加载一个已经部署的合约
2、验证合约是否加载成功 isValid
3、如何加载合约成功,则调用合约的 transfer方法
注意:
1、这里的 TokenERC20是根据solidity智能合约生成的对应的Java类,用于java/Android和智能合约交互的,如果你对这里不太清楚,不妨看看我之前的一篇文章。
以太坊Web3j命令行生成Java版本的智能合约
2、如果加载合约失败,可能的一个原因是合约对应的Java类中的 BINARY的值不对,这个值是你部署合约成功之后的bytecode,你最好检查对比一下。
我发送一笔交易,可以通过这个地址查询
本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://www.ssyg068.com/biquanzx/8033.html
发表回复
评论列表(0条)