原子性问题解决方案假如你要操作一笔交易,但是你不能百分百确认交易是否完全执行并发送到目的地,而且可能只有部分操作被记录,也可能某一方会丢钱。如果出现诸如此类的情况,相信应该没有人会再用这个网络了。电源故障或事件故障可能会给数据库造成严重影响。为了保证有效性,每个数据库事务要满足四大标准,也就是所谓的ACID模型,即原子性、一致性、隔离性以及持久性。本文主要围绕原子性展开。首先,什么是原子交易?原子交易是指要么完全执行要么完全不执行的数据库事务。那么,为什么要使用这些事务呢?先来看下我们所处理的问题,以分布式数据库为例。假设我们想要更改一些数据,而数据库不支持原子更改,那么可能会导致一部分数据与另一部分不一致。如果某位用户不知道有过更改,他会看到替代数据,然后无法确定哪些数据是正确的。但是,如果数据库支持原子交易,那么任何更改都只能通过两种方式执行:要么全改要么全不改。下面我们会深入研究最新的分布式数据库所遇到的问题,然后分析链下实现方案。传统解决方案考虑原子性的话,多阶段提交是目前使用较多的。两阶段提交协议是最常见的,而一阶段和三阶段提交协议也广为接受。一阶段提交是实现原子性最直接的方法,但也是较粗糙和低效的方法。更改由事务管理器发出、参与者执行指令来完成。显然,这个模型有太多固有威胁和陷阱,比如参与者可能会掉线,然后回来的时候就错过了提交。两阶段提交更全面些,它将每个事务分成两个阶段。首先,事务管理器会查询每个参与者以确定是否提交事务。他们会创建必要的临时项并投票提交。当管理器收到所有参与者回复“是,我已准备好付款”,它会向他们发出提交请求,但只要有一个人回答“否”或没回复,管理器都会撤销付款。这个方案比一阶段提交更稳健、更安全,但也不是无懈可击。实际上,如果有参与者拒绝该事务,那么这一项就会停留在那里,在管理器发出回滚指令之前都无法删除,从而导致网络锁定。为了解决这个问题,三阶段提交方案面世,它将第一阶段分为两部分。事务管理器也是从查询参与者的投票开始,但会推迟预备指令,直到收到所有参与者的肯定回复。然后参与者创建项并确认他们已为下一阶段做好准备。与两阶段提交一样,最后阶段仅在收到所有确认后执行。三阶段提交具体步骤虽然三阶段提交安全级别更高,但由于阶段多,要交换的信息多,它的表现也没有那么好。所以就这些传统解决方案而言,很难确定哪个方案更好。这里有必要说一下单个数据库节点的原子性问题。它是在前馈分类账的帮助下实现的。一般来说,无论用户什么时候请求将事务反映到数据库,第一步就是让这一项持久存在,然后将其写入磁盘分类账。如果过程中出现系统故障,会出现两种可能的结果。一,如果磁盘上的账本项不见了,事务就会回滚;二,如果还在,那么重启时磁盘上的事务就可以恢复。有四个本地数据库的分布式数据库,每个数据库中关于Bob和Alice的余额信息都不同链下网络中的原子交易自2009年加密货币出现以来,比特币用户的数量呈指数级增长。相应的,交易佣金和交易延迟情况也在增加。因此,社区积极地寻找着可扩展性解决方案。在他们的努力下,闪电网络成为第二层解决方案,实现了支付通道及多跳交易。为了防止因某人的过错而损失资金,原子性也是需要的。下面是现有的各种解决方案。HTLC为了实现原子性,目前用的最多的就是HTLC,即在预设锁定时间前呈现初始密钥可以花费资金。为了深入了解这一方案,我们先来看下基于闪电网络的事务流程。首先,接收方节点生成密钥并计算哈希值。之后,将该哈希值发送到发送方节点作为HTLC生成的基础。发送方生成合约并将其发送到节点1,即路径上下一个节点,该节点用递减的时间锁创建新合同。这个新生成的合同由节点1沿着路径发送到节点2,然后节点2重复相同操作并继续缩短时间锁。合约一路前进到接收方,由接收方通过自己一开始就生成的密钥签名释放资金,然后从发出合约的节点处获得资金。反过来,这一动作向最靠近发送发的节点揭示密钥,并授权解锁支付并接收资金,然后再向前一节点出示密钥。整个路径重复这一过程后,每个节点都收到了付款,至此支付完成。所以,造成节点丢钱的唯一因素就是它无法赶在时间锁的时限内签名释放资金,比如在接收到密钥后就离线。使用HTLC进行的Alice到Eric的支付该方案的缺点是,在不利情况发生的同时,偶尔会出现关于合同到期时间及客户资金损失方面的分歧。HTLARipple的Interledger协议是一个开放协议套件,用于各类账本间转账。该项目白皮书中提出了“公证人”这一概念。为了实现原子性,最初建议使用通用模式和原子模式。在通用模式下,Interledger的原子性通过HTLA实现——HTLA本质上是HTLC的改良版,两者的不同在于,HTLA能够在区块链不支持HTLC的情况下支持各类连接,包括有条件支付通道、On-Ledger持有/托管、简单支付通道、Trustline等等。Interledger跨账本支付框架换句话说,如果跨链支付要通过不支持HTLC的区块链,那么连接器可以使用其他方法复制,以便满足所有合约条款,例如支付时间、金额、支付解锁条件等。PMSprite通道的目标是开发新的支付通道,解决闪电网络原子性、部分存款与通道资金注销等问题。通过添加原始合约管理器,HTLC得到了显著升级。开发者是想让PM成为HTLC的仲裁人,然后将任何单个节点的合约到期决策权委托给相应的软件,防治有参与者离线并丢失钱财。仲裁人应该是常规的以太坊智能合约,登记类似'H哈希的X原值已于到期前在区块链上发布'这样的声明。Sprite通道也应该有统一的合约到期时间。如果原值在合约到期前及时发布了,那么就受理所有争议。逻辑会排除有人收到了钱而另一人指出所有人的到期时间都一样的情况。但是,如果原值发布时间无效,那么这笔付款就无争议。SpriteChannel争议解决过程HTLRCelerNetwork是针对公链可扩展性并通过离线技术实现性能最大化的解决方案。在这个体系中,PM变成了一个哈希时间锁注册表,但大部分功能仍旧保留。HTLR有两个依赖端点,即IsFinalized和QueryResult。前者返回的结果是原值是否先于区块数字完成注册;而后者返回的是原值是否已注册。这两个功能最终可以实现合并。需要注意的是,HTLR始终是链上的。NotariesInterledger的原子模式应该就用到了“公证人”这个角色。通过公证人完成的支付和通过闪电网络HTLC进行的支付很相似,两者唯一的区别是,在出示密钥之前,接收方节点会将合约转交给公证人,即从其通用地址列表中随机选择的特殊实体。公证人的设定是允许发送方设置验证支付的实体数量及可接受的恶意公证人数量。公证人必须在拜占庭容错共识的基础上,对批准付款进行投票。如果一切正常,他们将“标记”交易,使接收方节点能够解锁资金。这个概念在白皮书中看起来不错,但很难实现跨链交易。此外,它要求用户信任公证人。Observers这一角色在Geo协议中出现,该概念为原子性问题提供了独特的解决方案。目前项目团队在创建一个去中心化的点对点链下网络来进行资产交换。只要事务参与者在执行期间遇到问题,观察者就会介入。观察者既不会影响事务方向也不会改变任何内容。他们不是用来验证每一个事务的,只是用来干涉用户请求的。Geo采用类似二阶段提交的框架来处理常规事务。首先,所有参与者签名表示已准备好付款。其次,如果每个人都有签名列表,则执行付款。如果有参与者说“文件”不存在,那么观察者会在两个阶段间采取行动。这种情况下,他们会从任意节点处拿到签名列表并发送给所有参与者,如果无法完成就不执行任何操作,然后交易会按时到期失效。GEO协议观察者工作流程原子跨链支付原子交换是目前实现跨链支付最常用的方式。通过原子交换进行的跨链交易无需托管服务或第三方介入。它使用时间锁合同且必须是由执行事务的区块链支持的。在现实生活中,用户在区块链上按预先设置的时间锁定想要交换的金额,然后生成一个原值、计算哈希,再声明另一个用户只有呈现出这个原值才能获得这笔钱。时间锁和哈希可以在区块链上看到。这时,另一位用户想用3个莱特币换这个比特币。为此,他使用和第一个用户一样的哈希值将3个莱特币锁在合约上——他可以在另一条区块链上看到这个哈希值。而第一个用户要想从第二个用户的合约里拿到币,就必须透露他的原值,然后第二个用户再用这个公布了的原值从第一个用户的智能合约里拿到他的币。要想完成交易,第一个用户就必须透露他的原值。如果他不这样做,交易就无法结束。在这种情况下,为避免出现两位用户的资金同时被阻拦的情况,合同有效性有一定时限。原子交易各阶段展示多路径闪电网络的设计者提出了多路径原子支付技术,但尚未实现。这个技术旨在将大额支付分解为多笔小额支付以缓解网络流动性问题。其原子性通过改进后的HTLC实现。接收方创建一个基础原值以用于之后创建每笔小额支付的部分原值。一旦接收方收到部分付款,就可以通过这个基础原值解锁资金,无论款项到达顺序如何。在Geo协议里,多路径原子性的提供方式与单路径原子性完全相同结论在去中心化网络中,原子性的开发受到了很多新概念的影响。第一个出现的是哈希时间锁合同,其优势在于节点掉线时减少损失并且保障发送方和接收方的安全。而其问题在于资金必须冻结在通道中,参与者必须保持在线以避免损失。然后是在HTLC基础上改良后的HTLA和HTLR。前者可以实现在各种注册表中使用HTLC,甚至是那些不支持相应合同的注册表。后者则解决了节点脱机的问题。之后的新方案中出现了观察者和公证人。虽然在使用这些方案时我们要非常小心,因为观察者/公证人的中心化可能会损害网络,但是一个设计得当的系统可以帮助这两个角色维持去中心化状态。我们会继续进行研究,也欢迎大家一起加入分布式系统的开发与问题的解决。
马斯克回应查理芒格关于加密货币言论的推文:我们可能会死,但无论如何都值得一试:2月17日消息,马斯克回应一条关于芒格最新的批评加密货币言论的推文,加密货币应该被禁止,并称加密货币就像“性病”一样令人不齿。马斯克评论称,“2009年,我曾和芒格共进午餐,他向整个餐桌的人说特斯拉将如何失败。这让我很难过,但我告诉他,我同意所有这些理由,我们可能会死,但无论如何都值得一试。[2022/2/17 9:57:26]
经济日报:区块链的价值和前途取决于如何运用:4月20日,经济日报刊文“加密资产走热带来什么价值”。文章表示,加密资产市场正在见证投机与人性的疯狂。从技术进步的维度看,部分加密资产由于运用了区块链技术,的确为创作者乃至知识产权保护带来益处。事实上,无论如何炒作,区块链作为技术本身是中立的,其价值和前途取决于如何运用。目前,区块链技术还存在性能不足、普及尚浅、未获权威认可等问题。如果抛开加密资产市场的噱头与炒作,更多看到以NFT等为代表的确权体系对知识产权保护、重塑数字娱乐等产业的作用,进一步完善区块链建设,发挥出其更大的潜力,造福于人,可能会给这一轮热情烙印上更深远的意义。[2021/4/20 20:38:16]
大咖零距离 | 如何尽量的以小博大:1月3日20:00,金色盘面邀请实盘大V爆哥做客金色财经《大咖零距离》直播间,将分享《如何尽量的以小博大》,敬请关注,欲进群观看直播扫描海报二维码报名即可![2020/1/3]
声音 | Jeffrey Wernick:华尔街不喜欢比特币 不知如何用它讲好故事:芝加哥大学经济学与金融学博士、区块链和比特币项目早期参与者、Uber和Airbnb早期投资人Jeffrey Wernick称,华尔街不喜欢比特币,或因不知如何用其讲好故事拿下高估值。Wernick认为,现在的华尔街的公司估值模式已经从传统的现金流折现模型(DCF)转向通过炒作故事概念来获取高估值。他认为,DCF是里的清的帐,可以通过现有现金流、未来增长预期和折现率定价求得。在这种模式下的高估值是因为,低融资成本下的低折现率导致的。Wernick解释,在炒作概念的估值模式里,项目方会找博士来撰写估值模式和框架,并称这是正确的估值方法,接着再找更多人的输出类似的观点,造成一个所谓的共识,最后再说服其他人接受这一共识。之后,他们会如法炮制的输出“为什么这家公司估值应该比去年更高“的共识。但是,这些始终都是概念。Wernick还指出,特斯拉就是通过炒作概念来获取高估值的,通过不断地讲故事来维持高估值、保证投资人不受损失。[2019/6/21]
普京:俄罗斯不能有自己的加密货币 但必须研??究如何使用加密货币:据cointelegraph消息,俄罗斯总统普京6月7日在与俄罗斯公众的年度现场问答会议上表示,俄罗斯不能有自己的加密货币,这是因为加密货币超越了国界。对于所谓加密货币挖矿,普京指出俄罗斯确实没有对此进行规范,但态度“非常谨慎”。关于加密货币作为支付方式,普京指出,虽然专家说日本已经部分采用加密货币作为支付,但这“在其他国家并不适用”。俄罗斯联邦中央银行认为加密货币既不是支付手段,也不是价值储备手段。加密货币不受任何支持,人们应该小心谨慎地对待它。俄罗斯必须密切关注这一现象,以确定俄罗斯如何参与其进程。此外普京还补充说明,俄罗斯必须研??究如何使用加密货币,以避免在国际金融领域的任何限制。据cointelegraph分析,普京或许在暗示可以通过使用加密货币避免目前西方国家对俄罗斯的制裁。[2018/6/8]
编者按:本文来自猫Buboo,作者:Buboo,星球日报经授权发布。这是中国经济的寒冬。在区块链行业,寒冷更甚。前些日子,传统互联网行业大佬、消费链的杨宁宣布退出币圈。年初活跃的薛蛮子、徐小平都没声音了。这好像不是好事情.
1900/1/1 0:00:00巴哈马中央银行每月都发布一份财务报表,汇总了巴哈马所有银行的资金,为岛上所有银行提供综合财务指标。该会计师以今年10月巴哈马央行财务报表为依据,展开分析.
1900/1/1 0:00:00作者:jolestar最近流行一个说法是币圈凉了,无币区块链代表未来。一直以来对区块链技术有几种看法:只有比特币,没有区块链。区块链只是为了实现比特币而采用的一种不得已而为之的技术,没有什么先进性,也没有通用性.
1900/1/1 0:00:00随着越来越多的人通过社交平台进行沟通交流和自我展示,社交平台汇聚了大量的用户,并成为我们日常生活中不可缺少的工具.
1900/1/1 0:00:00一)学术:区块链数学科学会议-科学思潮,跨界创新Author:魏然,八维资本人类历史上最近的至暗时刻莫过于第二次世界大战,但科学的光芒和思想的碰撞在战争中并未停止闪耀.
1900/1/1 0:00:00看到郭宏才悬赏100个比特币全球范围求购最便宜的电站,李明立马辗转找到了他。那两天,全球有400多个人揭了郭宏才的“皇榜”,四川、新疆、新加坡、吉尔吉斯斯坦、伊朗等等,众多竞争对手中,李明在伊朗找到的4分钱一度的电最终胜出.
1900/1/1 0:00:00