首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

比特币、以太坊、Fabric…你知道它们优缺点吗?不懂

需要使用一枚数字货币时候,就将它状态标记为已经花费,并创造一枚新与之等额数字货币,将它所有权登记账户之下。...这种能力使得以太坊合约具有非常高灵活性,但也可能会使合约功能具有不确定性。 与以太坊自己动手开发语言、虚拟机思路不同,Fabric选择了使用现有的容器技术来支持智能合约功能。...比特币提出了使用默克尔树(Merkle tree)来存放交易散列方式,需要回收硬盘空间,只需将老旧交易从默克尔树剔除即可。一个不含交易信息区块头大小仅有80字节。...但这种做法实际上并不能有效地解决问题,因为总有一些通用底层合约因为广泛使用,而把大多数调用者合约聚集在同一个分区。...其中功能合约专门用于提供可复用功能函数,其它合约调用,且必须声明为无状态,这一点消除了绝大部分合约聚集现象;而只有应用合约可以保存自己状态,所以在执行应用合约,对其采用动态分区方案:在合约被执行之前

2.5K60

面向企业区块链教程(一)

在企业区块链,不使用轻客户端,因为节点代表一个企业,而企业有基础设施来运行完整节点。 区块链分叉是什么节点之间关于区块链有效性存在冲突,即网络存在多个区块链,就会发生分叉。...请记住,星座是可选,仅在需要私有合约才应将其集成 Quorum 网络。 安装 Quorum 和星座最佳方法是构建源代码。在本书中,我们仅集中在 Ubuntu 和 macOS 上步骤。...使用基础合约而不是库来拆分公共代码将不会节省燃气,因为 Solidity 继承是通过复制代码实现。因为库认为是基础合约,所以库具有内部可见性函数会被复制使用合约。...否则,具有库内部可见性函数无法使用合约调用,因为需要进行外部调用。具有内部可见性函数无法使用外部调用调用。此外,库结构和枚举会被复制使用合约。...在这里,我私有智能合约对所有三个网络成员可见。 privateFor 仅在发送私有事务使用。它被分配给一个接收者 base64 编码公钥数组。

7300
您找到你想要的搜索结果了吗?
是的
没有找到

当我们做区块链,我们在做什么

区块链 关于区块链是什么,网上解释多如牛毛。这里,我从需求角度总结一下:当做记录保存(身份存证),它是分布式账本;当做交易或支付(跨境支付),它是信任机器。...从零配件生产,主机厂制造整车,然后通过各个区域销售公司,比如欧洲区、北美区、大中华区等等销售公司,整车卖给各区域内经销商。...欠款部分归还,这个欠条内容就会发生变化,变化方式就是欠条标记成历史,进而生成包含新内容欠条。 ?...对于复杂金融合约,往往会涉及多种state变化,这个时候我们就必须使用自动化流程封装这些变化,封装这些变化东西其实就是智能合约。...Deployment unit 网络拓扑 打包成docker镜像之后,就可以部署运行环境,形成一个分布式账本网络

1.5K20

当我们做区块链,我们在做什么 | 洞见

区块链是什么 关于区块链是什么网络解释多如牛毛。这里,我从通常需求角度总结一下:在记录保存(身份存证),它是分布式账本(分布式数据库);在交易或支付(跨境支付),它是信任机器。...汽车金融始终围绕车生命周期发生金融活动。从零配件生产,主机厂制造整车,然后通过各个区域销售公司整车卖给各区域内经销商。...欠款部分归还,这个欠条内容就会发生变化,变化方式就是欠条标记成历史,进而生成包含新内容欠条。 ?...对于复杂金融合约,往往会涉及多种state变化,这个时候就必须使用自动化流程封装这些变化,封装这些变化东西其实就是智能合约。...网络拓扑 打包成docker镜像之后,就可以部署运行环境,形成一个分布式账本P2P网络

1.3K10

独家 | 一文读懂Corda分布式记账技术

一个商业或者金融结构,以银行为例,从一个客户账户转一笔钱另一家银行接收者账户,两家银行都需要检查这次交易是有效,也就是客户资金已经转走,并且最后正确接收。...这是由分布式账本本质决定,账本上所有节点(参与者)状态必须一致。 具体Corda,只有当所有相关方都接受了所提交交易输入和输出是正确,才会提交交易。...区块链主要吸引力之一就是信任机制,也就是不需要信任你(或者任何人)也可以相信在链上交易都是有效。这是可以实现,因为所有的交易都是公开,一旦它们包含在一个区块,那么这种状态永久保持。...一位不怀好意参与者想要修改一个区块交易几乎是不可能,因为它需要在下一个区块加入链之前,网络中所有节点区块副本进行修改。...这样做缺点是,使用区块链每个参与方都必须保留该链本地副本,这样一个新区块添加到链,所有参与方都会收到更新并保持在相同状态。 降低一个系统信任机制会对系统性能和可扩展性产生很大影响。

1.4K30

分布式网络详解

一个节点接收到一个新交易,它会验证该交易有效性并将其转发给其他节点 智能合约执行:以太坊区块链上智能合约可以自动执行而不需要人为干预,一个智能合约触发,它会自动执行其中定义代码并将结果保存到区块链上...: 文件存储:一个节点想要将文件上传到IPFS网络,它会将文件切分成小块并将这些小块存储自己节点上,每个小块都有一个唯一哈希值用于标识该块内容 哈希索引:节点会将每个小块哈希值加入自己哈希索引...B需要将某个商品或服务交付给Party A,合同可以包含各种条件和规则,根据实际需求进行定义 状态转移:Party A和Party B完成交易条件和要求,他们会使用Corda协议进行状态转移,状态转移会将合同定义条件和规则转化为一个新状态表示交易已经完成...,Party A和Party B都会记录这个状态并将其广播给其他节点以便其他参与方也可以了解交易状态和结果 智能合约Corda协议支持智能合约,允许用户在合同中使用自定义代码逻辑来实现特定功能和操作...,如果交易通过了验证节点会将交易记录添加到自己本地交易池中并将交易广播给其他节点 确认交易:大多数节点都已经接收并确认了一笔交易,这笔交易将被视为有效交易并添加到区块链,此时该交易就不可逆转并且参与方账户余额也会相应地发生变化

47650

Move: 一门面向资产编程语言

基于 Corda 智能合约 从去年就开始在一个用 Corda 项目上,从开始接触 Corda 后来使用 Kotlin 写 Corda 智能合约,就一直有一个苦恼,要写 Corda 逻辑几乎超过了业务逻辑...可是我们应该意识是,区块链与我们传统平台开发是不同。传统平台开发基于是大家具有不同业务逻辑与基础内容,本质上大家所处理内容几乎完全不同。 ?...事实上,Transaction script 具有 all or nothing 特性,即要么都成功,要么都失败,不会存在一种中间状态。...在使用 cargo 构建项目上,其实是*.mvir文件作为 String 传入 Rust 编译器,由 Parser 转为 Rust 代码运行。...但是其本身在很多方面依然做不够好。比如: 代码表意方面,代码中使用了大量 Hard code 返回值状态码;Move 语言测试例子,很多 test case 起不到快速上手帮助作用。

1.1K40

对话V神:区块链跨链技术大规模应用将在一两年内爆发

· 贰 · 跨链技术应用 ☞ 公证人模式 链与链之间互操作最简单方法是使用公证人模式。在公证人模式使用受信任一个或者一组团体向链X声明链Y上发生了某事件,或者确定该声明是正确。...‘智能合约’,使得用户在闪电网络上进行确认交易和黄金一样安全(或者和比特币一样安全)。...△图9 闪电网络结构图 交易双方在开启闪电交易功能之前,会首先将开启状态所需数据写入主区块链建立闪电交易合约,例如锁定期限,合约规则等数据。...闪电网络出现故障按照合约规则和举证方数据,在主区块链上进行处理。每一个状态通道建立,类似于一个多重签名系统构建,保证了交易双方守信原则,它比多重签名多了合约处理。...一个状态通道结束后,双方按照闪电网络输出最终状态数据来兑现合约,这相当于是一个交易帐本,帐本记录了参与方交易结果,进而实现财产重新分配。

1.5K60

Corda - 为了商业而设计区块链平台 | 雷达哔哔哔

解决方案 Corda 在继承了区块链点对点网络基础上,网络区分为不同兼容区(compatility zone),每个兼容区内可以部署不同智能合约(smart contract),同时辅以可插拔共识机制...交易可终结性 什么?我付了钱还要等6个区块才能确认交易达成?还会分叉?那交易到底是发生了还是没发生?我交易是薛定谔猫吗?...别担心,Corda 网络分为不同兼容区,并允许在每个兼容区内自主配置共识算法,以帮助兼容区内节点以最快速度达成共识。...参与方身份认证 公有链每个客户端和节点都不需要使用物理世界真实存在身份进行交易,而对于真实商业世界交易,我交易对手方对我考虑一笔交易至关重要。...Corda 作为联盟链,使用业界已经比较成熟 X509 证书为每个节点提供身份。 可扩展性 区块链平台主要性能瓶颈在于处理每笔交易并达成共识过程,这里存在着巨大网络开销和计算工作。

1.1K40

【以太坊篇】-‘链上数据隐私保护’

为了给上面所讲私有合约和公有合约提供隐私保护执行环节,系统借助zcash(首个使用零知识证明机制区块链系统,它可提供完全支付保密性,同时仍能够使用公有区块链来维护一个去中心化网络。...有了TEE加成,Coco Framework通过使用数据访问控制方案来实现复杂隐私保护模型。交易执行,智能合约代码和状态都只能通过应用定义接口返回给有权限的人。...同时,Coco Framework并非必须要和云服务绑定,它可以部署云上(如Microsoft Azure),也可以部署在企业自己服务器上。...baby ZoE是以太坊最新拜占庭版本中加入零钞特性,实现匿名功能初级版zcash,考虑与已有的以太坊兼容性问题以及集成代价,zoe只实现了预编译合同。...ZoE运行模式与零钞非常类似,主要经历阶段如下: (1)铸币阶段:转账ETH交易合约会生成等值承诺,类似于如今支票。之后存储在摩尔根树,金额进入合约账户

71810

跨境支付CBDC:区块链技术新起点(二)

跨两个区块链网络执行一个交易事务,两个链中都通过智能合约执行,在合约使用HTLC以确保交易原子性,同时消除了对手双方担忧和风险,在一个不需要第三方仲裁情况下实现跨境支付。...SWIFT实验采样区块链技术 SWIFT在实验采用了Corda和Quorum联盟链技术构建跨境支付模型,实现不同DLT网络之间CBDCCBDC交易、CBDC法币交易、法定货币多样性事务交易...,才可以加入网络网络记录每个节点地址和节点身份证书以及节点服务类型。...Corda所有事务都由一个或多个智能合约管理,这些合约定义了允许哪些操作以及谁可以执行这些操作,且在不公开事务内容情况下进行签名(盲签名技术),使用随机化私钥,交易双方仅通过其公钥进行标识,并且每个交易生成一个新密钥对...其中隐私性是Quorum重要部分,如图8是Quorum系统架构,其添加了隐私管理模块,事务数据进行了隐私隔离,其中采用了加密飞地和零知识证明等技术,客户端在创建交易,可以选择密文消息或者消息hash

1.6K10

智能合约语言 Solidity 教程系列9 - 错误处理

如果想修改这个数据库内容,就必须创建一个事务事务意味着要做修改(假如我们想同时修改两个值)只能完全应用或者一点都没有进行。...另外,如果我们正确使用assert,有一个Solidity分析工具就可以帮我们分析出智能合约错误,帮助我们发现合约中有逻辑错误bug。...子调用中发生异常,异常会自动向上“冒泡”。 不过也有一些例外:send,和底层函数调用call, delegatecall,callcode,发生异常,这些函数返回false。...如果在使用new创建一个新合约出现第3条原因没有正常完成。 如果调用外部函数调用时,调用对象不包含代码。...发生assert类型异常,Solidity会执行一个无效操作(指令0xfe)。 在上述两种情况下,EVM都会撤回所有的状态改变。是因为期望结果没有发生,就没法继续安全执行。

84250

程序猿们,别着急入手区块链,先给自己选好武林门派再练功不迟

另一大类区块链系统,各个节点所共享是可完成图灵完备计算状态机,如以太坊、Fabric,它们都通过执行智能合约而改变共享状态状态,进而达成种种复杂功能。...节点数量很多(公有链环境)使用第6代Intel Core CPU所提供SGX扩展功能提供一种称为时间流逝证明(PoET)机制来形成共识,这种机制与比特币所采用PoW同属“抽彩票”式共识算法...这些设计上考虑,无疑大大增强了Corda现有大型金融机构采纳机会。不过这一切看上去很美好,但目前Corda实现基本上是个花架子,设想种种,不少处于TODO状态。...开发智能合约所要求语言和算法技术水平不高,什么并发、多线程之类东西一般用不到,普通开发者均可胜任。但是智能合约难点在于业务与安全。...不用说搞出什么密码学突破,就是密码学现有成果充分运用在区块链里,都可能会搞出一些逆天创新来。

1.2K90

EVMPatch:自动修补以太坊智能合约

合约部署:基于委托调用代理升级方案是启用即时合约修补选择选项。因此,EVMPATCH使用代理合约作为具有恒定地址所有事务主要入口点,集成了此部署方法。...EVM还具有专用呼叫指令,但是这些指令仅用于控制权转移到完全独立合约。因此,它们在重写字节码不需要修改。常量数据引用:所谓CODECOPY指令用于数据从代码地址空间复制内存地址空间。...合约使用低级调用指令,错误处理异常可能发生,其中返回值不会自动处理,并且合约正确检查返回值。可以通过在此类调用指令后插入通用返回值检查来解决此问题。...由于修补程序异常而导致重新执行带有修补代码事务而导致早期失败无法准确地修补合约与原始合约行为进行比较。为了解决这个问题,在EVM禁用了gas统计。...但是,在实际攻击事务,整数溢出发生标记加法运算期间。因此,这构成了Osiris误报性问题。由于Osiris报告易受攻击添加,因此EVMPATCH也不会自动对其进行修补。

32820

微服务与SOA架构(1)

是否服务仅仅是很慢,又或者服务端发生什么事情导致无法发送响应?解决超时条件问题对于远程服务可连接性来说是相当具有挑战性。...ACID事务用于维持数据库一致性,对同一个请求多个数据库更新操作进行协调,使得当事务处理过程中发生问题,该请求所作出所有数据库更新都可以回滚。...通过ATM机向你账户存入现金,大概几分钟甚至几个小时后才会在账号显现出来。换句话说,钱从离开自己手到真正存入账户之间有一个软性转换状态:钱已经离手,但是还没到达你银行账户。...对于不能依赖最终一致性和软状态而必需事务一致性情况,可以服务粒度设计得较粗,从而把业务逻辑包装在一个服务内,最后通过ACID事务来实现事务级别的一致性。...另一种方法是使用事件驱动技术,请求状态变得一致向相关客户推送通知。这种技术给应用带来了很高复杂度,不过确实能够在使用BASE事务实现事务状态管理。 太复杂了?

70540

Solidity 文档--第一章:智能合约入门

而send可以任何人(拥有一定数量代币)调用,发送一些币给其他人。注意,当你通过该合约发送一些代币某个地址,在区块链浏览器查询该地址什么也看不到。...如果你想修改这个数据库东西,就必须创建一个事务,并得到其他所有人的确认。事务这个词意味着你要做修改(假如你想同时修改两个值)只能完完全全实施或者一点都没有进行。...从一个账户另外一个账户转账请求发生,这个数据库事务特性确保从一个账户减掉金额会被加到另一个账户上。如果因为某种原因,往目标账户上增加金额无法进行,那么源账户金额也不会发生任何变化。...区块 区块链要解决一个主要难题,在比特币中被称为“双花攻击”。网络上出现了两笔交易,都要花光一个账户,会发生什么?一个冲突? 简单回答是你不需要关心这个问题。...无论执行什么位置,一旦gas耗尽(比如降为负值),将会触发一个out-of-gas异常。当前调用帧所做所有状态修改都将被回滚。 存储,主存和栈 每个账户有一块持久化内存区域被称为存储。

77550

智能合约编程语言-solidity快速入门(下)

所以使用这种事务一般错误处理机制可以保证一组调用及其子调用要么成功要么失败回滚,就像啥事都没有发生一样,solidity错误处理就是要保证每次调用都是具有事务。...发生assert类型异常,Solidity会执行一个无效操作(指令0xfe)。 在上述两种情况下,EVM都会撤回所有的状态改变。是因为期望结果没有发生,就没法继续安全执行。...接着我们测试异常情况,value改成1,即不能2整除数,执行sendHalf函数后,控制台输出错误日志如下,从错误日志我们可以看到此次交易reverted一个初始状态: ?...需要注意是,在合约构造器,不能使用this调用函数,因为当前合约还没有创建完成 其它合约函数必须通过外部方式调用。对于一个外部调用,所有函数参数必须要拷贝内存。...一个函数如果它不修改状态变量,应该声明为视图函数,以下几种情况认为修改状态变量: 写状态变量 触发事件(events) 创建其他合约 call调用附加了以太币 调用了任何没有view或pure修饰函数

1.3K21

区块链(Blockchain)简单介绍

比特币是一种P2P形式数字货币。点对点传输意味着一个去中心化支付系统。什么是P2P网络呢?传统货币都是由中央银行统一发行,所有的个人储蓄由银行统一管理,这是典型中心化系统。...去中心化 信息不可篡改 劣势: 以比特币为例,任何一笔交易数据都需要同步其它所有节点,同步过程难免会受到网络传输延时影响,带来较长耗时。...节点数量很多(公有链环境)使用第6代Intel Core CPU所提供SGX扩展功能提供一种称为时间流逝证明(PoET)机制来形成共识,这种机制与比特币所采用PoW同属“抽彩票”式共识算法...另一方面,节点数量少且受控,Sawtooth Lake可以采用Quorum共识机制,这是由Ripple提出并验证共识机制,非常适合于联盟链场景,这样Sawtooth Lake就摇身一变成为很好用联盟链了...这些设计上考虑,无疑大大增强了Corda现有大型金融机构采纳机会。不过这一切看上去很美好,但目前Corda实现基本上是个花架子,设想种种,不少处于TODO状态

2.3K70

Hyperledger项目简介

人们问“什么是Hyperledger?”...,我给出答案通常是“你指的是由Linux基金会运行名为Hyperledger项目,还是指由该项目孵化一种账本技术,这种技术曾混乱地被称为 Hyperledger Fabric ?”。...Linux基金会通过会员费得到资助,主要来自企业,并提供会员指导,咨询,培训,活动,网络网络研讨会。 项目。...通常有人说“我们尝试使用Hyperledger”,他们意思是“我们试图使用Fabric”,但有时它们是指 在Hyperledger项目中孵化任何DLT。最好检查一下!...Corda旨在满足受监管金融机构要求,因此首先由金融服务行业使用。它也可用于其他行业:解决财务要求是任何行业良好选择。

2.1K60

联盟链智能合约安全浅析

语言特性问题 不管使用什么语言对智能合约进行编程,都存在其对应语言以及相关合约标准安全性问题。Fabric 智能合约是以通用编程语言为基础,指定对应智能合约模块。...错误函数地址当作函数、条件表达式、运算操作对象使用,甚至参与逻辑运算,导致各种非预期程序行为发生。...除此之外,无符号整数回绕最可能利用情况之一是用于内存分配,如使用 make() 函数进行内存分配 make() 函数参数产生回绕,可能为0或者是一个最大值,从而导致0长度内存分配或者内存分配失败...智能合约GetAssetPrice函数用于返回当前计算差价,第228可知,gas + rebate可能发生溢出,uint16表示最大整数为65535,即大于这个数发生无符号回绕问题: var gas...在CreateTypeAsset函数第64行,通过传入参数appraisedValue来计算接收资产类型值,实际上,传入参数appraisedValue等于17发生除零风险问题。 ?

2.1K10
领券