区块链链码
1. 区块链技术如何为实体产业赋能
现在国内已经有企业将区块链技术落地到了实际的产业中,如旺链科技就将区块链应用到金融服务,医疗健康,IP版权,物联网,共享经济,通信,教育,
社会管理,慈善公益,文化娱乐等领域
2. 有对IBM Hyperledger fabric架构有更深入了解的吗
Hyperledger fabric和公有链的区别见我在这里的回答。 区块链是什么,如何简单易懂地介绍区块链? - 知乎 Hyperledger-fabric算是目前在联盟链(私有链)这领域做得最成熟的了。新版本(v1)的整个结构大概是这样: 首先,链上有些chaincode(链码),可以理解为智能合约,总之是已经同意的逻辑。 然后一笔交易可以指向并触发这些合约,然后得到一个输出,这个输出也会被写在交易里。 此外,新版本相比于旧版本的变化是,整个网络的节点被分为两种(client我不认为是网络中的节点,因为不参与共识)。一种叫endorser(批准者),一种就是普通节点(peer)。此外还有某个叫做orderer(排序)的功能模块,有些节点可以身兼orderer,这个模块的主要功能是负责给交易排序和打包成区块。 交易的过程是这样: 1,首先,每个链码都有规定的批准者,假设我们考虑一个用于汽车交易的链码,它规定的批准者有A,B,C三个节点,比如说,这个链码规定了如下逻辑:这个交易生效的前提是A,B,C中的两个批准了这笔交易。 2,这个时候,假设用户小明要买车,他生成一笔交易请求用于触发这个用于交易的链码,他把这个请求发给A,B,C三个节点等待批准。 3,如果请求无误可信,A,B,C三个节点认可了这个请求,他们会直接进行运算生成结果然后写成交易反馈给用户(这个时候并不写入区块链,或者他们管这个叫账本)。 4,用户收到返回的交易之后,如果确认返回的交易结果一致,则把交易发给排序模块,然后排序模块将所有收到的交易根据时间排序,打包形成区块,然后发给所有节点。注意,这里排序模块不对交易进行任何验证,也就是不管他们收到的交易是不是得到了足够的批准,只要格式对,他们都打包进区块。 5,所有节点验证每笔交易是不是得到了足够的批准,如果是,则注明有效交易,否则著名无效交易,但不论结果如何,所有交易都会被写进账本。 6,最后,如果交易成功,节点通知用户交易已经加入账本。 相比于之前的版本,v1多了这些东西: 1,排序模块从逻辑上被拆了出来,然而实际上节点可以兼职排序。 2,多了批准者这个东西,也就是说,只有批准者会知道你的交易的详情,而其他节点在验证的时候只验证是不是得到了规定的批准者的批准。 3,我这里没写,但是多了一个叫通道的东西,不同的通道本质上就是不同的独立的区块链。 注:我不是这个项目的参与者,所以以上的介绍完全基于个人看他们说明文件的理解,他们文档里对于区块链的一个核心问题——存在恶意节点的情况所言甚少,所以我也不清楚他们对于恶意节点有多高的容忍度。 但是,光从这个结构本身看,的确,v1增加了很多功能,结构也很清晰,很灵活,可以支持不同的应用场景。然而,从理论的角度讲,并没有多少创新性可言,区块链技术的目前的两个主要问题——scalability(可扩展性)和私密性,它都没有解决。尽管它号称解决了这两个问题,实际上还是建立在牺牲可靠性和安全性的基础之上的。
3. 如何创建属于自己的 fabric 区块链
这个是需要借助平台进行创建。
IBM中国研究院开发的超能云(SuperVessel)平台提供了给区块链爱好者、开发者的区块链开发测试环境。通过该平台,用户能够免费、超快速创建基于Hyperledger Fabric的多节点区块链、并在自己的链上花式玩转智能合约。
当然,国外的去中心化内容分享平台DECENT也是可以创建的。
4. 学习区块链开发是学习go语言、hyper ledger fabric比较好、还是以太坊智能合约比较好或者公链开发
Go全栈+区块链课程:
一共22周,分为5个阶段,
第一阶段4周 go语言基础与网络并发 ,学完入门go语言,
第二阶段 4周 go语言实战web开发,爬虫开发,密码学,共识算法,实现轻量级公链,学完可以开发golang的网站,爬虫,实现轻量级区块链
第三阶段 4周 以太坊源码分析与智能合约Dapp开发,学完掌握以太坊核心与开发智能合约,以及区块链,
第四阶段 4周 超级账本,比特币 EOS,源码分析与智能合约实战,学完以后掌握超级账本开发,山寨比特币,分叉EOS,以及智能合约Dapp开发
第五阶段 6周 项目实战 ,实战5个企业级项目,学完可以拥有1年区块链项目经验
从语言本身特点来看,Go 是一种非常高效的语言,高度支持并发性,Go 语言的本身,它更注重的是分布式系统,并发处理相对还是不错的,比如广告和搜索,那种高并发的服务器。
Go语言优点:
性能优秀,可直接编译成机器码,不依赖其他库,Go 极其地快。其性能与 Java 或 C++相似。
语言层面支持并发,这个就是Go最大的特色,天生的支持并发,Go就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发。
内置runtime,支持垃圾回收,这属于动态语言的特性之一吧,虽然目前来说GC不算完美,但是足以应付我们所能遇到的大多数情况,特别是Go1.1之后的GC。
简单易学,Go语言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go关键字是25个,但是表达能力很强大,几乎支持大多数你在其他语言见过的特性:继承、重载、对象等。
丰富的标准库,Go目前已经内置了大量的库,特别是网络库非常强大,我最爱的也是这部分。
内置强大的工具,Go语言里面内置了很多工具链,最好的应该是gofmt工具,自动化格式化代码,能够让团队review变得如此的简单,代码格式一模一样,想不一样都很困难。
跨平台编译,快速编译,相较于 Java 和 C++呆滞的编译速度,Go 的快速编译时间是一个主要的效率优势
Go语言缺点:
软件包管理:Go 语言的软件包管理绝对不是完美的。默认情况下,它没有办法制定特定版本的依赖库,也无法创建可复写的 builds。相比之下 Python、Node 和 Ruby 都有更好的软件包管理系统。然而通过正确的工具,Go 语言的软件包管理也可以表现得不错。
缺少开发框架:Go 语言没有一个主要的框架,如 Ruby 的 Rails 框架、Python 的 Django 框架或 PHP 的 Laravel。这是 Go 语言社区激烈讨论的问题,因为许多人认为我们不应该从使用框架开始。在很多案例情况中确实如此,但如果只是希望构建一个简单的 CRUD API,那么使用 Django/DJRF、Rails Laravel 或 Phoenix 将简单地多。
异常错误处理:Go 语言通过函数和预期的调用代码简单地返回错误(或返回调用堆栈)而帮助开发者处理编译报错。虽然这种方法是有效的,但很容易丢失错误发生的范围,因此我们也很难向用户提供有意义的错误信息。错误包(errors package)可以允许我们添加返回错误的上下文和堆栈追踪而解决该问题。
另一个问题是我们可能会忘记处理报错。诸如 errcheck 和 megacheck 等静态分析工具可以避免出现这些失误。虽然这些解决方案十分有效,但可能并不是那么正确的方法。
5. 区块链作业!看看哪位大神会谢谢!
任务帮已被国家查封 是贴着区块链标签 以个人发行的数字货币 属于传销币
6. 公有链的安全主要由什么等方式负责维护
公有链:是指全世界任何人都可以随时进入到系统中读取数据、发送可确认交易、竞争记账的区块链。例如:比特币、以太坊。
私有链:是指其写入权限由某个组织和机构控制的区块链,参与节点的资格会被严格限制。
联盟链:是指有若干个机构共同参与管理的区块链,每个机构都运行着一个或多个节点,其中的数据只允许系统内不同的机构进行读写和发送交易,并且共同来记录交易数据。
联盟链是一种将区块链技术应用于企业的相对较新的方式。公有链向所有人都开放,而私有链通常只为一个企业提供服务,联盟链相对公链来说有更多限制,通常为多个企业之间的共同协作提供服务。
联盟链与公有链的不同之处在于,它是需要获得事先许可的。因此并不是所有拥有互联网连接的任何人都可以访问联盟区块链的。联盟链也可以描述为半去中心化的,对联盟链的控制权不授予单个实体,而是多个组织或个人。
对于联盟链,共识过程可能与公有链不同。联盟链的共识参与者可能是网络上的一组预先批准的节点,而不是任何人都可以参与该过程。联盟链允许对网络进行更大程度的控制。
那说到联盟链的优点:
首先,联盟链受一个特定群体的完全控制,但并不是垄断。当每个成员都同意时,这种控制可以建立自己的规则。
其次,具有更大的隐私性,因为来验证区块的信息不会向公众公开,只有联盟成员可以进行处理这些信息。它为平台客户创造了更大的信任度和信心。
最后,与公共区块链相比,联盟链没有交易费用,更灵活一些。公共区块链中大量的验证器导致同步和相互协议的麻烦。通常这种分歧会导致分叉,但联盟链不会出现这种状况。
联盟链技术可以用来优化大多数传统信息化系统的业务流程,特别适用于没有强力中心、多方协作、风险可控的业务场景。联盟链的共享账本机制可以极大降低该类场景下的对账成本、提高数据获取效率、增加容错能力、巩固信任基础、以及避免恶意造假。
随着区块链技术的不断发展,越来越多的机构与企业开始加大对区块链的研究与应用。相比公链而言,联盟链具有更好的落地性,受到了许多企业与政府的支持。
联盟链可以理解为是为了满足特定行业需求,内部机构建立起来的一种分布式账本。这个账本对内部机构是公开透明的,但如果有相关业务需求,对该账本的数据进行修改,则还是是需要智能合约的加入。
智能合约(Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
总体来说,目前联盟链智能合约的主流架构是:系统合约 + 业务合约。
系统合约:在节点启动前配置完成,一般用于系统管理(如BCOS的预编译合约(权限管理、命名管理等),由项目方编写,安全性较高。
业务合约:根据实际业务编写而成,需要部署,类似公链智能合约,由一般内部机构参与方编写,需遵守一定的要求,安全性一般。
联盟链合约相较于常规公链在规范性、和安全性都有一定的提升,但在以下几个方面的安全性问题,仍可能存在安全风险:
(1)、代码语言安全特性
一种是继续沿用主流公链编程语言,并在其基础上改进(如:BCOS使用的solidity),另一种则是以通用编程语言为基础,指定对应的智能合约模块(如:fabric的Go/Java/Node.js),不管使用什么语言对智能合约进行编程,都存在其对应的语言以及相关合约标准的安全性问题。
(2)、合约执行所带来的安全性问题
整型溢出:不管使用的何种虚拟机执行合约,各类整数类型都存在对应的存储宽度,当试图保存超过该范围的数据时,有符号数就会发生整数溢出。
堆栈溢出:当定义方法参数和局部变量过多,字节过大,可能使程序出现错误。
拒绝服务攻击:主要涉及到的是执行合约需要消耗资源的联盟链,因资源耗尽而无法完成对应的交易。
(3)、系统机制导致的合约安全问题
这里主要是指多链架构的联盟链:
合约变量的生成如果依赖于不确定因素(如:本节点时间戳)或者某个未在账本中持久化的变量,那么可能会因为各节点该变量的读写集不一样,导致交易验证不通过。
全局变量不会保存在数据库中,而是存储于单个节点。因此,如果此类节点发生故障或重启时,可能会导致该全局变量值不再与其他节点保持一致,影响节点交易。因此,从数据库读取、写入或从合约返回的数据不应依赖于全局状态变量。
在多链结构下进行外部链的合约调用时,可能仅会得到被调用链码函数的返回结果,而不会在外部通道进行任何形式的交易提交。
合约访问外部资源时,可能会暴露合约未预期的安全隐患,影响链码业务逻辑。
(4)、业务安全问题
联盟链的智能合约是为了完成某项业务需求执行某项业务,因此在业务逻辑和业务实现上仍是可能存在安全风险的,如:函数权限失配、输入参数不合理、异常处理不到位。
我们对联盟链安全的建议:
(1)、简化智能合约的设计,做到功能与安全的平衡
(2)、严格执行智能合约代码审计(自评/项目组review/三方审计)
(3)、强化对智能合约开发者的安全培训
(4)、在区块链应用落地上,需要逐步推进,从简单到复杂,在此过程中不断梳理合约与平台相关功能/安全属性
(5)、考虑DevSecOps(Development+Security+Operations)的思想
链平台安全包括:交易安全、共识安全、账户安全、合规性、RPC安全、端点安全、P2P安全等。
黑客攻击联盟链的手法包括:内部威胁、DNS攻击、MSP攻击、51%的攻击等。
以MSP攻击为例:MSP是Fabric联盟链中的成员服务提供商(Membership Service Provider)的简称,是一个提供抽象化成员操作框架的组件,MSP将颁发与校验证书,以及用户认证背后的所有密码学机制与协议都抽象了出来。一个MSP可以自己定义身份,以及身份的管理(身份验证)与认证(生成与验证签名)规则。
针对MSP的攻击,一般来说,可能存在如下几个方面:
(1)、内部威胁:a)当前版本的MSP允许单个证书控制,也就是说,如果某个内部人员持有了可以管理MSP的证书,他将可以对Fabric网络进行配置,比如添加或撤消访问权限,向CRL添加身份(本质上是列入黑名单的身份),过于中心化的管理可能导致安全隐患。 b)如果有传感器等物联网设备接入联盟链,其可能传播虚假信息到链上,并且因为传感器自身可能不支持完善的安全防护,可能导致进一步的攻击。
(2)、私钥泄露,节点或者传感器的证书文件一般存储在本地,可能导致私钥泄漏,进而导致女巫攻击、云中间人攻击(Man-in-the-Cloud attack)等
(3)、DNS攻击:当创建新参与者的身份并将其添加到MSP时,在任何情况下都可能发生DNS攻击。向区块链成员创建证书的过程在许多地方都可能发生攻击,例如中间人攻击,缓存中毒,DDOS。攻击者可以将简单的DNS查询转换为更大的有效载荷,从而引起DDoS攻击。与CA攻击类似,这种攻击导致证书篡改和/或窃取,例如某些区块链成员将拥有的权限和访问权限。传感器网络特别容易受到DDOS攻击。智慧城市不仅面临着实施针对DDOS攻击的弱点的传感器网络,而且面临着弱点的伴随的区块链系统的挑战。
(4)、CA攻击:数字证书和身份对于MSP的运行至关重要。Hyperledger Fabric允许用户选择如何运行证书颁发机构并生成加密材料。选项包括Fabric CA,由Hyperledger Fabric,Cryptogen的贡献者构建的过程,以及自己的/第三方CA。这些CA本身的实现都有其自身的缺陷。 Cryptogen在一个集中的位置生成所有私钥,然后由用户将其充分安全地复制到适当的主机和容器中。通过在一个地方提供所有私钥,这有助于私钥泄露攻击。除了实现方面的弱点之外,MSP的整体以及因此区块链的成员资格都在CA上运行,并且具有信任证书有效的能力,并且证书所有者就是他们所说的身份。对知名第三方CA的攻击如果成功执行,则可能会损害MSP的安全性,从而导致伪造的身份。Hyperledger Fabric中CA的另一个弱点是它们在MSP中的实现方式。 MSP至少需要一个根CA,并且可以根据需要支持作为根CA和中间CA。如果根CA证书被攻击,则会影响所有根证书签发的证书。
成都链安已经推出了联盟链安全解决方案,随着联盟链生态的发展,2020年成都链安已配合多省网信办对当地政企事业单位的联盟链系统进行了从链底层到应用层多级安全审计,发现多场景多应用多形态的联盟链系统及其配套系统的漏洞和脆弱点。
并且,成都链安已与蚂蚁区块链开展了合作,作为蚂蚁区块链优选的首批节点加入开放联盟链,我们将发挥安全技术、服务、市场优势,与开放联盟链共拓市场、共建生态、并为生态做好安全保驾护航。
一方面我们的智能合约形式化验证产品VaaS将持续为开放联盟链应用提供『军事级』的安全检测服务,为应用上线前做好安全检测,预防其发生安全和逻辑错误;我们的『鹰眼』安全态势感知系统采用AI+大数据技术,为开放联盟链及其应用提供全面及时的『安全+运营』态势感知、链上合约风险监测、安全预警、报警、防火墙阻断及实时响应处理能力。
另一方面,我们的安全产品已经积累了数十万的客户群体,我们将发挥我们的全球客户资源和市场优势,与开放联盟链共拓市场。
在联盟链平台上,我们能提供全生命周期的整体安全解决方案,成都链安以网络安全、形式化验证、人工智能和大数据分析四大技术为核心,打造了面向区块链全生态安全的『Beosin一站式区块链安全服务平台』。
『Beosin一站式区块链安全服务平台』包含四大核心安全产品和八大明星安全服务,为区块链企业提供安全审计、虚拟资产追溯与AML反洗钱、安全防护、威胁情报、安全咨询和应急等全方位的安全服务与支持,实现区块链系统『研发→运行→监管』全生命周期的安全解决方案。
我们会积极发挥区块链安全头部企业优势,共同构建安全的区块链商业网络,推动区块链产业健康、安全的发展,探索区块链未来的无限可能。