未来扣钱

未来扣钱实现方式#

一、核心前提(一定要记住)#

  • 签名不会过期
  • 交易会失效(nonce / gas / 规则)
  • “未来扣钱”不能靠存交易,只能靠授权或托管

二、三种核心方案(从轻到重)#

1️⃣ Permit(EIP-2612)#

是什么

  • 用户只签名,不先发交易
  • 用签名完成授权

本质

  • “我授权你在有效期内扣我这些 token”

特点

  • 不占 nonce
  • 用户不付 gas
  • 一步完成授权 + 扣款
  • 必须 token 原生支持

不能用在

  • 主币(ETH / SOL)
  • 不支持 permit 的 token(如 USDT)

2️⃣ Allowance(approve + transferFrom)#

是什么

  • 经典 ERC20 授权模型

本质

  • 链上记账的扣款权限

特点

  • 100% 兼容所有 ERC20
  • 授权状态链上可查
  • 两步交易
  • 有“无限授权”风险

适合

  • 老 token
  • 合规 / 审计要求高
  • 用户能理解授权

3️⃣ TimeLock / Escrow(托管)#

是什么

  • 钱现在就转进合约
  • 时间或条件满足后释放

本质

比特币技术

区块链入门 比特币技术#

廖雪峰的区块链笔记。 参考

比特币解决的问题#

比特币则是通过区块链技术,把整个账本全部公开,人手一份,全网相同,因此,修改账本不会被其他人承认。比特币的区块链就是一种存储了全部账本的链式数据库,通过一系列密码学理论进行防篡改,防双花。

比特币解决的是现金电子化后无需中央信任机构的交易问题,即M0如何通过网络进行价值传输。我们已经习惯了通过互联网对数字化的新闻、音乐、视频进行信息传输,因为信息传输的本质是复制,但现实世界的现金可不能复制。想象一下我们如何把100元现金通过网络发送给另一个人,同时确保交易前后两个人的现金总额保持不变。所以,中本聪的白皮书把比特币定义为“点对点的电子现金系统”。

区块链是由一个一个区块构成的有序链表,每一个区块都记录了一系列交易,并且,每个区块都指向前一个区块,从而形成一个链条:

比特币网络中是每次生成一个新区块,新区块中会打包多笔交易信息,

区块链原理#

交易信息的来源:内存池(Mempool)#

什么是内存池?

当用户(或钱包、交易所)发起一笔交易,例如从一个地址发送 BTC 到另一个地址,这笔交易会首先被广播到比特币网络,然后:

  1. 网络中的节点会接收到这笔交易
  2. 节点会先对其进行验证(签名是否有效、余额是否够等)
  3. 验证无误后,这笔交易就被加入到内存池(Mempool)

挖矿时如何生成区块?#

矿工创建新区块时:

  1. 从内存池中选择交易(优先选择手续费高的)
  2. 将这些交易打包成一个候选区块(称为 block template)
  3. 进行工作量证明(Proof of Work,解题)
  4. 谁先解出哈希,谁就生成新区块,广播给全网
  5. 其他节点验证区块,没问题就接受该区块,并加入区块链中

每个区块至少包含两笔交易:#

  1. Coinbase 交易:矿工的奖励交易(包括区块奖励和所有交易的手续费)
  2. 用户交易:从 Mempool 中打包进来的普通交易

情况:两个矿工同时挖出区块,产生短暂分叉#

假设当前链到高度 N,现在两个矿工分别几乎同时挖出下一个新区块。 因为网络传播延迟,不是所有节点都立刻看到同一个区块

解决机制:最长链原则(Longest Chain Rule)#

比特币规定:所有节点只承认「工作量最多(最长)」的链为主链。

分叉如何被解决?#

  1. 两条链并存时,网络中部分节点支持 N+1a,另一部分支持 N+1b

  2. 下一轮,假设某个矿工在 N+1a 的链上挖出了 N+2a,并成功广播给大多数节点:

    mathematica
    
    
    CopyEdit
         区块 N
          /  \
    区块 N+1a 区块 N+1b
         |
     区块 N+2a
  3. 所有节点看到 N+2a 后发现这条链「更长」,就切换到这个分支

  4. N+1b 就成为孤块(orphan block),被丢弃


孤块(Orphan Block)#

  • 是被网络短暂接受但最终被抛弃的区块
  • 其中的交易 不会丢失,而是重新回到 Mempool
  • 这些交易可能会被重新打包进后续区块中

举个例子:#

比如:

阅读区块链入门指南笔记

阅读区块链入门指南笔记#

以下为阅读《区块链入门指南》 的笔记。

区块链基础知识与关键技术#

共识机制#

区块链网络是由多个网络节点组成的,其中每个节点都存有一份信息备份,那它们是如何对交易达成一致的呢?也就是说,它们作为独立的节点,需要有一种机制来保障互相信任,这就是共识机制。

常用的共识机制有PoW(Proof of Work)工作量证明,PoS(Proof of Stake)权益证明,DPoS(Delegated Proof of Stake委任权益证明,DBFT(Delegated Byzantine Fault Tolerance)等。

比特币/以太坊主要采用的是工作量证明机制,通过算力比拼来增加恶意节点的作恶成本。通过动态调整挖矿的难度来让一笔交易时间控制在 10 分钟左右(6 个确认),但随着比特币挖矿越来越火热,消耗资源越来越多,对环境造成破坏;有些矿池拥有大量资源,也会造成一些中心化的风险。

权益证明机制则是通过权益(一般是代币)持有者进行投票来达成共识。这种机制不需要像工作量证明一样进行大量的算力比拼,但是也有一些风险,称为Nothing at Stake问题,很多权益持有者会在所有区块都投注并从中获利。为了解决这个问题,系统设置了一些规则,如对同时在多个链创建区块的用户/在错误链上创建区块的用户设置一些惩罚机制。目前以太坊正在向这种共识机制转变。

EOS则采用了委任权益证明,选出一些代表性的节点来进行投票,这种方式目的是优化社区投票的效率和结果,但带来了一些中心化的风险。

DBFT共识机制则是通过对节点分配不同的角色来达成共识,这样可以很大程度降低开销和避免分叉,但是也有核心角色作恶的风险。

比特币核心技术解读#

节点分为全节点和轻节点两种,早期所有的节点都是全节点,但随着数据量越来越大,运行在手机或平板等设备上的比特币客户端不需要存储整个区块链的信息,称为Simplified Payment Verification(SPV)节点,也叫轻节点。

Merkle Tree(默克尔树)是区块链系统中非常核心的数据结构,主要用于数据完整性验证和提高效率。它在比特币、以太坊等主流区块链中都有使用。Merkle Tree 是一种哈希二叉树,每个叶子节点是一段数据(如交易记录)的哈希值,每个非叶子节点是其两个子节点哈希值的再哈希:

功能说明
数据完整性验证一笔交易变动会导致整棵树根变动
轻节点验证SPV 客户端只需 Merkle 证明即可验证交易
节省带宽不用全量同步交易数据

Merkle Tree 可以在不下载全部区块数据的情况下验证某笔交易是否包含在一个区块中。

这叫做 SPV(Simplified Payment Verification)轻节点机制,比特币钱包常用。

  • 只需下载:
    • 该交易的哈希值
    • 到 Merkle Root 的“路径节点”(叫 Merkle Proof)

有了钱包(和资产)后,就可以开始交易了。我们来通过一个典型的比特币交易来理解这一流程:

A 和 B 都拥有一个比特币钱包地址(可以用 Bitcoin Client 生成,原理如上),假设 A 要给 B 转账 5 个 BTC,A 需要得到 B 的钱包地址,然后用自己的私钥对A->B转账5个BTC这笔交易签名(因为 A 的私钥仅有自己知道,所以拥有私钥则是拥有钱包资产的归属权);然后发布这笔交易,在比特币系统中发起交易需要支付小额矿工费作为交易手续费;矿工会开始验证这笔交易的合法性,得到六个确认后交易就可以被比特币账本所接受,整个验证过程大约 10 分钟。

阅读区块链技术指南笔记

参考

区块链诞生#

记账科技的千年演化#

阶段时期主要特点
阶段一:单式账本约公元前 3500 年 ~ 15 世纪使用原始的单式记账法(Single Entry Bookkeeping)
阶段二:复式账本15 世纪 ~ 20 世纪中期现代复式记账法(Double Entry Bookkeeping)出现和应用。 记录余额变化
阶段三:数字化账本20 世纪中期 ~ 21 世纪初物理媒介账本演化到数字化账本
阶段四:分布式账本2009 年至今以区块链为代表的分布式账本相关思想和技术出现

复式记账法虽然记录了交易的来龙去脉,不易出错,但本质上仍然是中心化模式。

中心化模式的记账系统方便使用,但在很多情况下仍然存在不少问题:账本掌握在个体手中,一旦出现数据丢失则无法找回;在同时涉及到多个交易方的情况下,需要分别维护各自的账本,如果出现不一致,对账较为困难。

因此,人们很自然地想到借助分布式系统的思想来实现分布式账本(Distributed Ledger):由交易多方共同维护同一个共享的分布式账本;打通交易在不同阶段的来龙去脉;凭借分布式技术,进一步提高记账的规模、效率、可靠性以及合规性。

2009 年 1 月,基于区块链结构的比特币网络悄然问世,它融合了现代密码学和分布式网络技术等重要成果。此后数年里,在纯分布式场景下,比特币网络稳定支持了海量转账交易。这让人们开始认识到,区块链这一看似极为简洁的数据结构,居然恰好解决了分布式记账的基本需求,于是基于区块链结构的分布式记账技术开始大量出现。由于这些技术多以区块链结构作为其核心的账本结构,也往往被统称为区块链技术。

分布式记账的难题#

分布式记账由来已久。为了正常进行商业活动,参与者需要找到一个多方均能信任的第三方来负责记账,确保交易记录的准确。然而,随着商业活动的规模越来越大,商业过程愈加动态和复杂,很多场景下难以找到符合要求的第三方记账方(例如,供应链领域动辄涉及来自数十个行业的数百家参与企业)。这就需要交易各方探讨在分布式场景下进行协同记账的可能性。

因此,区块链就是对历史区块做一个摘要,然后任何增量也一起做个新的摘要,就可以定代到谁进行了篡改。

当然,区块链结构也并非解决分布式记账问题的唯一答案,实际上,除了简单的线性队列结构,也有人提出采用树或图结构。

难题说明区块链解决方案
拜占庭问题不可信节点之间如何达成共识共识机制(PoW、PoS)
双花问题同一资产被重复消费广播交易 + 共识确认
一致性问题全网记录保持同步最长链规则等
女巫/DDoS 攻击伪造节点影响网络需消耗资源参与
MEV 问题排序操控交易获利公平排序、加密交易
性能瓶颈TPS 低、成本高Layer2、分片等
隐私问题链上数据公开透明零知识证明、隐私链

零知识证明(Zero-Knowledge Proof,ZKP)是一种密码学技术,它允许一方(证明者)向另一方(验证者)证明某个陈述是真的,但不泄露任何额外的信息,包括这个陈述的具体内容。