区块链的可拓展性研究【05】闪电网络

1.闪电网络:闪电网络是一种基于比特币区块链的 Layer2 扩容方案,它通过建立一个双向支付通道网络,实现了快速、低成本的小额支付。闪电网络的交易速度非常快,可以达到每秒数万笔交易,而且交易费用非常低,几乎可以忽略不计。

闪电网络是构建在比特币网络上的第二层支付协议,用来解决比特币网络堵塞问题。简单来说就是在区块链之外开通一条“绿色通道”,将大量高频的、小额的交易在区块链外进行。同时保证交易的安全性。

闪电网络如何运作?
交易双方需先建立一个支付通道,各转一笔钱到一个多签地址上,双方同时出具私钥才能将钱取出,为避免一方不出具私钥钱取不出来的情况,在存入之前需要先广播一条退款消息,如果一方不出具私钥,你就可以将退款消息广播到区块链上。

但需要注意的是,退款消息一旦广播到链上,对方可以立即收到退款,而发起方的退款则需要存入一个双方的多签地址,退款发起方需要等待1000个区块确认后,才可以收到退款。也就是说**谁先发起退款关闭通道,就会受到延迟退款的小惩罚。**防止发起恶意交易。

闪电网络如何实现多方转账呢?

举个简单的例子:现有小明、小白两人需要交易,他们都分别与小红建立了支付通道。

第一步:1首先用自己的密钥R1生成了一个哈希值H1,然后将哈希值H1传给2。

第二步:同时2和3签署了一个合约(如果3在2天内能给2正确的密钥R1,2就给3转1.1BTC,否则就不给)

第三步:然后1又和3签署了一个合约(如果1天内1能给3密钥R1,3就给1转1BTC,否则就不给)

于是,3作为中间方,拿到1的密钥R1后给到2,2在拿到密钥R1后与1给的哈希值一对比,确认1的身份后即可给1转账,在整个交易过程中,2与3,1与3之间所达成的合约就是我们经常说到的哈希时间锁定合约(Hashed timelock contrct)。

闪电网络关键技术
1多重签名技术

闪电网络优缺点
闪电网络是一种基于区块链技术的二层解决方案,旨在提高比特币和其他加密货币的可扩展性和交易速度。它具有以下优点和缺点:

优点:

  1. 高速交易:闪电网络可以实现几乎实时的交易速度,不受比特币区块链的限制。它使用户能够进行快速且廉价的交易,类似于传统的在线支付系统。
  2. 低费用:由于大部分交易在闪电网络上进行,并且只在最后结算时才提交到区块链上,因此交易费用非常低。这使得小额支付变得更加经济实惠。
  3. 扩展性:闪电网络能够解决比特币网络的可扩展性问题。由于闪电网络上的交易是在链下进行的,因此可以在不增加区块链负担的情况下处理大量的交易。

缺点:
4. 中心化:闪电网络上的交易需要通过双方之间的多次协商和签名完成,这可能导致中心化的风险。如果用户不再信任对方或者其中一方失去访问闪电网络的能力,交易可能会受到影响。
5. 集中风险:闪电网络的节点必须一直在线才能参与交易,这可能导致节点的集中风险。如果一个大型节点垮台或遭受攻击,整个闪电网络可能会受到影响。
6. 资金锁定:在闪电网络上进行交易需要事先锁定一定数量的资金作为抵押。这可能导致用户的资金被锁定在闪电通道中,没有办法快速取出或转移。

总体来说,闪电网络是一种有潜力的解决方案,但也存在一些挑战和风险。随着技术的发展和改进,这些问题可能会得到解决,使闪电网络更加实用和可靠。

2/2多重签名与时间锁
Step1: 假如A需要向B发起多次转帐且交易总值约为10BTC,只需要,若A将钱存进多签地址后,B由于网络原因处于离线状态且短期内无法上线,那么A的钱将被一直锁定,直到B使用私钥签名解锁。为避免这种情况产生,在A锁定资金之前,B将向A提供一份退款交易(仅创建交易但不在主网上广播),退款交易内容为:在1月7日后(实际中使用区块高度作为时间限制),A可以使用多签地址内的10BTC,并附上B的签名。A在拿到退款交易后,仅需使用私钥签名后在主网上广播即可取回资金。
Step2: 付款方(A)向A和B共同持有的2/2多签地址存对应金额(此处假设为10BTC)即可。
Step3: 通道建立后,A可多次向B进行转账,且无需向主网缴纳手续费。具体的实现方式为:A构造一份新的退款交易发给B,退款交易内容为:在1月6日后,A可以使用多签地址内的9BTC,B可以使用多签地址内的1BTC(即A向B转账1BTC),并附上A的签名。A通过不断更新退款交易来实现转账。每个交易都有时间锁限制,每次交易更新后锁定时间是逐层递减的,防止恶意用户公布旧的交易。
Step4: 假设最后一次退款交易更新内容为:(无时间锁)A可以立即使用多签地址内的0BTC,B可以立即使用多签地址内的10BTC(即A一共向B转账10BTC)。由于通道是有时限的(第一个退款交易约定是1月7日后A可提取所有BTC),所以B需要在最新的交易已经生效而次新的交易还没生效前向主网广播最新的交易结果,否则可能出现旧的交易被广播并且生效的情况。例如:B在1月7日时仍未广播最新的交易内容,尽管最新的约定是B可以取走所有的资金,但A持有第一代退款交易且已经到了生效时间,故A可以签名并广播第一代退款交易,取走所有资金,B损失了10BTC。当退款交易在主网上广播时,也意味着通道即将关闭。
在这里插入图片描述
初代通道技术虽然一定程度上提高了主网吞吐量,降低了交易手续费,但是缺点明显:1、交易仅是单向的,若B想向A转账,则需再开一个通道;2、不友好的时间锁定,如果交易过程中A或B不配合流程,则另一方需要等到时间锁结束后才可解锁资金;3、通道时间有限,由于退款交易限制,到期后通道即关闭。

2 RSMC(Revocable Sequence Maturity Contract)
Revocable Sequence Maturity Contract (RSMC)是一种用于支付通道管理的智能合约机制,主要用于比特币闪电网络中。RSMC允许支付通道的参与方在任何时候撤销合约,并确保资金的安全性和可用性。

RSMC的基本原理是,支付通道的参与方可以通过签署一份具有一定有效期的合约来建立支付通道,并锁定一定数量的资金在合约中。在合约有效期内,参与方可以进行多次的支付操作,无需将每笔交易都记录到区块链上。这样可以大大提高交易的速度和降低交易费用。

当支付通道的一方希望撤销合约时,可以通过触发合约中的撤销条件来关闭支付通道。在撤销合约时,合约中的资金将按照事先约定的规则进行退还给各方。这样可以确保参与方在支付通道关闭时能够安全地取回自己的资金。

RSMC机制提供了一种灵活且安全的方式来进行支付通道管理,可以提升比特币闪电网络的可扩展性和交易效率。同时,RSMC也为用户提供了更多的控制权和灵活性,使他们能够根据自己的需求进行资金的管理和交易操作。

3、HTLC
HTLC (Hashed Time-Locked Contract) 是一种通过哈希和时间锁定达成的合约,用于在链下通道网络中实现安全的双向支付。

HTLC 主要应用于闪电网络(Lightning Network),该网络是一个构建在比特币等区块链上的第二层扩容解决方案。HTLC 协议提供了一种安全的方式,使得在两个参与方之间进行链下交易成为可能。

在 HTLC 中,参与方会设定一个哈希值和一个时间锁。其中,哈希值是由一个秘密值通过哈希函数产生的,而秘密值则只有参与方自己知道。

在交易完成时,接收方需要提供与之前设定的哈希匹配的原始秘密值,以使用合约中的资金。如果提供的秘密值与哈希匹配,接收方可以使用合约中的资金。

若在设定的时间锁定期内未能提供正确的秘密值,资金将自动退回给发送方。这样设计可以确保资金不会被无限期地占用,鼓励及时完成交易。

HTLC 提供了一种安全高效的方式,实现链下交易,并同时保持底层区块链的安全性和去中心化特性。

尽管RSMC完善了通道的功能,但如果涉及多个用户,每个用户间开启通道则需要大量的时间与经济,这与设计之初的理念背道而驰。因此可以基于通道之上,增加HTLC技术将各个通道串联起来,成为闪电网络。
HTLC全称为Hashed Timelock Contract,该合约的功能类似于限时转账,转账方往2/2多签地址转入一笔资金,同时收款方生成一个随机数R,并对R进行哈希运算得到H(R)。转帐方构建一笔交易,交易内容为:若收款方在一定时间内能提供R值,且其哈希值等于H(R),则这笔钱可由接收方支配。签名后发给收款方。收款方也构建一笔交易:在一定时间后转账方可以取回多签地址内资金。签名后发给转账方。
当A与E要进行交易又不在两者间建立通道时,如图5所示,可以通过HTLC技术借用别人的通道实现间接转账,即A→F→G→E或E→G→F→A。通过哈希锁定技术可以确保资金在各方手中安全的周转,通过时间锁技术为各周转单位提供缓冲时间,同时确保在超时后资金可取回。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/220159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring中的经典的9种设计模式

Spring中的经典的9种设计模式 大家好,我是微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在编写高质量、可维护的代码时,设计模式是我们的得力工具之一。今天,让我们一同探讨Spring中的经典…

04.仿简道云公式函数实战-QLExpress基础语法

1. 前言 小伙伴大家好,在上一篇文章我们简单初探了QLExpress表达式引擎,我们简单写了一个HelloWorld的程序,并成功的运行期望的结果。在本篇文章中我们来熟悉一下QLExpress的语法,因为我们在后面简道云公式实战的时候&#xff0c…

发布 Whatsonchain 上的 BSV20 插件

我们发布了 whatsonchain 上的 BSV20 插件来验证 BSV20 代币。 对于任何交易,whatsonchain 都可以通过以下网址打开: https://whatsonchain.com/tx/{hash}我们使用此 bsv20 v21 交易 打开 Whatsonchain 。 打开whatsonchain后你会看到BSV20插件&#x…

Linux系统安装MySQL8.0版本详细教程【亲测有效】

首先官网下载安装包:https://downloads.mysql.com/archives/community/ 一、上传到安装服务器 二、解压 tar -xvf mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz三、移动位置并重新命名 mv mysql-8.0.31-linux-glibc2.12-x86_64 /usr/local/mysql四、创建mysql用户…

解密布隆过滤器:数据领域的魔法阵

解密布隆过滤器:数据领域的魔法阵 前言布隆过滤器简介基本概念:核心原理:工作方式:注意事项: 设计原理数据结构:哈希函数:高效查找原理: 误判率和容量的权衡误判率问题:容…

官宣 | HelpLook已入驻企业微信应用市场

HelpLook正式入驻企业微信第三方应用市场。 HelpLook支持自定义域名与AI站内搜索,能够帮助企业微信用户搭建所见即所得的企业知识库、产品帮助中心、用户手册、企业博客。 | 怎么找到HelpLook并开始使用 在企业微信的第三方应用就可直接搜索HelpLook,添…

虚幻学习笔记14—重叠和碰撞事件

一、前言 在开发应用当中两个物体的重叠和碰撞事件会经常用到,在虚幻中哲两个有很大的区别,在官方文档碰撞概述其实已经讲了怎样发生碰撞和重叠,但是还是遗漏不少注意事项合细节,主要文档写的太粗糙了,这也让我在使用的…

C++Weekly - Code Review: O3DE Game Engine

对宣布开源的3D游戏引擎O3DE的简单Code Review。 A Quick Look At the Source To Amazons O3DE Game Engine. (Open source 3D Engine) 之前叫做Lumberyard。 Home - O3DE 1,pull up the code on github,用的是CLion 2,先查看CMake。用的…

docker---数据卷

docker---数据卷 数据卷: 容器与宿主机之间进行数据共享 数据卷是一个供容器使用的特殊的目录,容器的目录和宿主机的目录进行映射,主机和宿主机之间都可以对目录中的文件进行修改,双发同步生效。对镜像也没有影响。宿主机到容器实现数据迁移…

区块链是个啥

区块链算是一个散尽硝烟的热点, 现在说这个,有点冷水里冒热气的感觉。 先百度一下,区块链就是一个又一个区块组成的链条。每一个区块中保存了一定的信息,它们按照各自产生的时间顺序连接成链条。这个链条被保存在所有的服务器中..…

Docker Compose入门:打造多容器应用的完美舞台

Docker Compose 是一个强大的工具,它允许开发者通过简单的 YAML 文件定义和管理多容器的应用。本文将深入讨论 Docker Compose 的基本概念、常用命令以及高级应用场景,并通过更为丰富和实际的示例代码,助您轻松掌握如何通过 Docker Compose 打…

【08】ES6:运算符的扩展

一、指数运算符 指数运算符(**)返回第一个操作数取第二个操作数的幂的结果。 x ** y2 ** 2 // 4 2 ** 3 // 8指数运算符是右结合的。 a ** b ** c 等于 a ** (b ** c)2 ** 3 ** 2 // 相当于 2 ** (3 ** 2) 512指数运算符可以与等号结合,…

数据结构和算法 - 前置扫盲

数据结构和算法 一、前置扫盲 1、数据结构分类 1.1 逻辑结构:线性与非线性 tip:逻辑结构揭示了数据元素之间的逻辑关系。 线性数据结构:元素间存在明确的顺序关系。 数据按照一定顺序排列,其中元素之间存在一个对应关系&#x…

独立完成软件的功能的测试(5. 完结总结)

独立完成软件的功能的测试(5. 完结&总结) 软件测试的基础理论 1. 什么是软件:控制计算机硬件的工具。2. 什么是软件测试:使用技术的手段,查找软件的缺陷,保证软件的质量3. 软件测试的分类1. 阶段分&am…

Liunx系统挂载磁盘

1.具体步骤 大概五个步骤 添加磁盘磁盘分区格式化分区挂载分区到指定目录设置开机自动挂载 目标将sdb1分区挂载到/data目录 2.添加磁盘 使用lsblk -f命令可以查看当前系统磁盘情况 lsblk -f 可以看到已经有一个磁盘sda,现在我们给虚拟机增加一个磁盘 添加完成后…

数据结构-集合

介绍 数据结构中的集合是一种包含不同元素的数据结构,其中每个元素都是独一无二的,即集合中的元素互不相同且无序。 集合数据结构分类如下: 并集是两个集合的所有部分合并在一起形成的集合;交集是两个集合共同包含的元素组成的集…

数据结构与算法:插入排序

原理 保证区间内排好顺序,逐渐将区间外数据插入到该区间中。 从局部扩散到整体。 第一次:保证0-1范围内有序 arr[0]和arr[1]对比,若arr[0] 大于 arr[1] ,交换两个值, 0-1范围内有序。 第二次:保证 0-2 …

Java八股文面试全套真题【含答案】- Spring篇

以下是一些关于Spring的经典面试题以及它们的答案: 什么是Spring框架? Spring是一个轻量级的开源Java框架,用于快速构建企业级应用程序。它提供了一个容器,可以集中管理和组织应用程序的各个组件,同时提供了一套丰富的…

记录 | 命令行模式clash报错Can‘t find MMDB, start download

下载: https://link.zhihu.com/?targethttps%3A//gitee.com/mirrors/Pingtunnel/blob/master/GeoLite2-Country.mmdb 重命名为 Country.mmdb 下载完放到 ./clash 启动的同级目录就行 不行的话就放到 ~/.config/clash 下

【PID学习笔记 8 】控制系统的分析方法之一

写在前面 前面已经完成了控制系统的性能指标学习,从这节开始继续学习控制系统的分析方法,本文重点介绍分析方法概述和时域分析法。 一、控制系统的基本分析方法 控制系统的基本分析方法包括: 古典方法(经典控制理论)…