我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:六合特肖 > 访问令牌 >

如何在以太坊区块链的Solidity中实现访问控制

归档日期:08-14       文本归类:访问令牌      文章编辑:爱尚语录

  基于角色的访问控制是软件系统的安全需求,旨在为数百个用户提供访问。虽然这种需求通常在企业软件和操作系统中实现,但对以太坊区块链的处理并不多。

  当将供应链设计为有向无环图时,我们意识到需要动态地确定谁可以向图中的每个节点添加信息。从现实世界的角度来看,如果您拥有一家制造工厂,您可能希望装配线上的所有操作员都能够用他们自己的帐户记录他们已经组装了一个零件。

  OpenZeppelin是我在Solidity开发中使用的金标准,它有一个roles.sol合同,用于在erc721.sol合同中实现诸如miter和burner等角色。不幸的是,这些实现不允许在运行时创建新角色,如果您想使用单独的角色控制对每个单独令牌的访问,则需要创建新角色。

  本文旨在展示如何为以太坊区块链构建基于角色的访问控制系统。根据我们的要求从头开始编写RBAC合同,然后从OpenZeppelin中找到了相同想法的版本,它具有几乎相同的方法。为了可重用性,我尽可能地重构我的代码以遵循它们的命名法。

  4. 每个角色都会有一个关联的第二个角色,这是唯一允许添加或删除用户的角色。

  如果您是使用OpenZeppelin中的Roles.sol和RBAC.sol合同,则需要注意Roles.sol仅实现在角色内生效的操作,而在角色外部发生的操作在RBAC.sol或访问中实现/roles/*Role.sol收缩,包括在创建角色时存储角色的数据结构。

  · 角色结构中包含一个描述字符串,结构本身存储在一个数组中。数组中每个角色结构的位置用作标识符。有一种使用映射来存储角色,但我发现这里没有必要。

  · 每个角色在实例化时接收我们指定为其管理角色的另一个角色的标识符,并且在实例化之后不能修改该角色。此管理员角色是唯一可以为此角色添加和删除承载者的角色。

  出于安全性和一致性的原因,您可以从角色中删除承载,但没有方法可以从系统中完全删除角色。

  我喜欢公开测试智能合约,既展示了操作案例,又能对代码的可靠性提供了一些信心。

  为了回应之前的反馈,我现在还使用eth-gas-reporter的gas使用报告。

  4. 基于角色的访问控制实现起来并不一定复杂,但正如本文所示,需要考虑许多权衡和设计决策,这些决策与您的用户及其允许的操作密切相关 去设计。如果您决定复用RBAC系统的这种实现,我会很高兴,但我也鼓励您寻找并考虑其他选择。

  人人都懂区块链系列是一套精心录制的一系列针对于零基础朋友,致力于让更多人了解区块链技术,比特币,以太坊,莱特币等数字货币

  假设你想给Bob发送10.25个GRIN,你们两个想通过一个文件交换这个交易的必要信息。运行: ...

  稳定币从某种程度上产生了一个虚拟的“平行货币体系”,在这个体系里货币的运作套路可以千变万化,打破常规...

  一个拥有自己数据的所有权,并能够实现数据自由交易的未来,是一个值得为之努力的更好的未来。

  区块链技术能为金融行业带来两方面的应用价值,一方面通过变“自证”为”他证“的方式强化信任关系,二是生...

  比特币等数字货币有一个天然的缺陷,就是没有主权机构为其价值背书,这导致比特币的价格容易被炒作,从而出...

  黑客威胁随着21世纪技术的进步而增长。但是,互联网的使用正在朝着更加开放、透明和安全的方向发展,同时...

  当区块链技术和加密货币慢慢走向主流应用时,也可以这样说。但是,当人们讨论区块链和加密货币时,这恰好也...

  分布式账本技术通过消除对单个组织的信任来改善这种情况。分布式应用程序在一组计算机上运行,每个计算机由...

  公有云通常指第三方提供商为用户提供的能够使用的云,比如我们经常使用阿里云即是一种公有云。公有云可通过...

  比如全球的碳交易,这个需要全球很多国家去达成共识,但目前是缺乏有力的中心组织。每个国家之间缺乏信任,...

  “中小企业在现代经济中发挥着重要作用,因为他们解决了许多就业、缴纳许多税款、巩固了当地的社区,最终推...

  未来区块链会应用于任何领域,给人类生活带来极大影响。区块链应用项目大致分为:存在性证明、智能合约、物...

  刚果共和国中部的开赛(Kasai)地区的钻石矿工。在2016年9月,政府武装杀害了反抗总统Josep...

  以太坊的早期承诺是创建一台世界计算机——一台去中心化的世界计算机——它将执行任何人的代码以换取费用,...

  甲骨文是全球第三大软件公司,业务和客户遍布世界各地。公司已基于Hyperledger Fabric超...

  Bitpay的首席商务官Sonny Singh解释说,随着区块链支付继续成为主流,[Bitpay]看...

  区块链——比特币等加密货币背后的数字分类账技术——因其透明度和可追踪性而受到称赞。区块链技术通过其可...

  ZOS Chain为金融业务建立了分布式账本,同时也为法币借贷的金融机构建立了分布式账本,让法币接入...

  随着行业规则的进一步健全,区块链将在食品、服饰产品、美妆用品等方面得到更加深入的应用,并展现出其多元...

  即使有即时更新系统(这仍然是一个非常不可能的情况),如果我晚上6点站在商店里,最后一波订单挑选和完成...

  自互联网出现以来,电信业出现了大量的创新。这带来了即时通讯,将AOL放在了首位。但是,电信消费者希望...

  为什么美国非常担心当下的中国在科技方面的举措,真正的原因,是在科技和市场的发展过程中,有一个潜移默化...

  Klaytn,韩国通讯应用巨头Kakao打造的企业级区块链公共平台,通过高效的“混合”设计,结合了公...

  对于比特币挖矿的矿工而言,他们会因为验证交易而获得比特币奖励。但对于那些运行自己的比特币全节点的人来...

  2009年1月3日,比特币网络诞生,中本聪(Satoshi Nakamoto)挖掘了比特币的起源块(...

  新的基础设施涌现出新的技术,而新技术中所带来的欲望则孕育着技术的自否定。原有的基础设施终因无法再满足...

  经济激励机制是共识协议设计的核心部分之一,一个合理的经济激励机制之于共识协议就如同共识协议对整个区块...

  先谈谈区块链游戏的历史,最知名的游戏想必大家都不陌生,就是在2017年推出风靡一时的迷恋猫,它一个基...

  DIPLive正是这样的一个平台,借助区块链技术,致力于创建一个全新的去中心化无边界艺术生活社区,并...

  Wirex以最先进的技术为基础,使数字支付的未来在今天成为现实。为了实现这一目标,以及方便数字和传统...

  对于建立在区块链技术上的保险理赔流程,大家更多讨论的是在收到索赔申请后,如何运用数据打通所有医疗机构...

  作为一种衍生于数字货币的技术,区块链正在成为产业互联网时代的赋能主力军。

  近期区块链概念反复活跃,上周五收盘前十分钟内,包括精准信息、新晨科技、易见股份、晨鑫科技等多只概念股...

  我们一直都在。当你在网上发现了喜欢的东西并下单购买,但最终发现它与你最初想象的不太一样。 那么几天之...

  马耳他现在的主营行业已经与十年前不同。曾经主要利用有吸引力的税收体系,马耳他已经从全球最完整的国内生...

  过去十年来,隐私已经成为全世界普通民众生活中讨论最多的话题。如Helium联合创始人Jason Ca...

  基于区块链的另类市场可以给原本受到融资渠道限制的私营公司更多选择,而且从市场流动性、结算速度、风险等...

  区块链与金融服务金融服务是区块链技术的第一个应用领域,不仅如此,由于该技术所拥有的高可靠性、简化流程...

  “在货币、协议、合同甚至普通法的历史发展进程中,我们现在已经到达了一个重要的里程碑。而这个里程碑是区...

  英国央行想测试的是,他们是否可以从自己的实时结算系统(RTGS),批量同步支付数百万英镑到另一个中央...

  富达(Fidelity)公司正在追赶数字加密货币浪潮已经不再是什么秘密了。其首席执行官最近发表的声明...

  Adel是一个全球性的加密货币社区。我们的社区已实现自我管理并独立运作,将通过Adelphoi加密货...

  区块链技术是时代发展的趋势,它的特性对绝大多数行业的发展都能产生巨大的影响。如文化生产供应链、网络媒...

  电子记录集中在“区块”中,然后采用密码学、按照时间顺序结合成运用复杂数学算法的“链”。这种称为“散列...

  该报告由CGI和Police Foundation共同完成,指出英国当前的制度存在缺陷,作用不大,其...

  “大国俄罗斯的大规模投资可能会创造出很多优秀的项目。”Momot表示,“在与乌克兰战争开始之前,IT...

  目前,区块链在技术上面来说,它只是在应用层,还完全没有到内核层、网络层之下。但是为什么很多人如此看重...

  单笔交易是整个区块链的基本元素,这里面主要包含价值输出方发起交易、其他节点验证交易两个动作。整个交易...

  该调查揭示了一些重要数据,用于帮助人们理解加密世界的发展阶段,比如81%的世界人口没有购买过加密货币...

  智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。基于区块链技术实现的智能合约,支持可...

本文链接:http://shawntierney.com/fangwenlingpai/698.html