币圈 - 虚拟货币
赵长鹏先生在美国认罪后,虚拟货币的江湖地位就算是稳定了。
虚拟货币一直游离在法律的边缘,中国早就封杀了。而今最大的交易平台老板因 “大量非法货币流通” 在美国认罪,让很多人觉得未来迷茫。
我倒是觉得不用担心了。这个圈子乱到没有点资产都不敢进去,但后面可能会越发趋于平稳。
因为至少在美国看来,“币安” 已经合法了,可以被美联储约束了。而不久的将来,中国一定会开放,中国从不会放过割韭菜的好工具。
两个月前,在国内的网约车上,司机小哥问我懂不懂虚拟货币。我说我不太懂,但理解起来应该比较快,希望他多讲讲。
他说他也不懂,就是前两天拉了一个客人。那位客人很客气,在车里长时间打电话,内容是盗了很多币,在和同伙计划跑路的细节。
小哥说,那位客人很随和,但是在电话里,他一直在嘲笑被盗的人一早起来发现巨额货币丢失后的绝望。
小哥说他不懂,看我戴眼镜,想问问我懂不懂,问我警察会不会去抓捕。
我说也不懂。只听说在币圈玩的,都挺野的。
比特币刚出来的时候,我刚参加工作,那时候听到了挖矿。等再听到巨大消息的时候,比特币已经 2w 美元了,现在已经 6w 了。
后面只听说不能玩,风险大,也就避而远之。
最近实在是有些穷疯了,就想看看币圈到底是什么,哪来的那么多种虚拟币,都还能兑换美金。
能兑换美金又不是法定货币,没有法律保护又能交易和购买实物。
还有很很多多那些 “币安、以太坊、区块链、去中心、web3” 等等名词,我想去弄明白到底咋回事。
下面内容就比较散乱了,主要是资料查询过程中的一些备忘。还是先说几个结论吧,tldr。
- 整个技术层面,没感觉到特色。
- 一切的基石 “区块链” 是单向链表,最简单的数据结构。里面的各种加密,也都是已经成熟的加密方案。
- “去中心化”,就是非常成熟的 p2p。
- 在基石之上搭建起来的 “智能合约”,就是 faas 服务。
- 从技术层面看,太弱了。所有参与币圈的,都是在豪赌,赌一个新瓶装旧酒能不能讲更多的故事。
- 所有的上层建设如币安、NFT 等,都基于最基础的 “区块链”,即相信它的 “不可篡改”。
- 然后加了两大护法,分别是基于 “p2p” 的 “去中心化” 和基于 “faas” 的 “智能合约”。这两个护法,是用来增加信心的。
- 一切的一切,都在于 信任 并 遵守 “区块链” 链表中保存的数据。这里的信任,是实打实的,就像白纸黑纸一样。但是遵守,一直都是空头支票。
- 因为 遵守 的空缺,整个币圈都是在豪赌,赌一个一落千丈的时间点,或者产业被法律认可。
- 转机是赵长鹏先生和币安,向美国认罪。遵守 已经有政府背书了(但 “去中心化” 的安全性就名存实亡了)。已经成型的产业大概率不会没落,这里将变成投资机构。但 DAO、web3 是走不下去的。
- 建议 USDT,和美元 1:1,可以让资产不贬值。说千道万,就是信不信得过。基于 10,我觉得以后可以简单的信一点。
- 整个产业,都在等待法律背书。可现实世界本就有法律、律师、法院了。这是一个矛盾的产业。
区块链
区块链是一种数据结构和算法集合。通过这套结构,可以保障以下特性:
- 不可篡改
- 高度安全
- 透明
区块链就是链表,通过加签增加了修改的复杂度。区块链就是让人相信:你看到的数据一定是真实的。
因为以上特性,可以基于区块链,做一些事情。只要产品的形态能够使用区块链的数据结构和算法来表达,就可以使用区块链技术。
比如,药品跟踪:有问题的药品有可能无法溯源。如果基于区块链系统,就可以做到无法篡改、透明。每一支药,从研发、出厂、销售、使用都可以被记录。
区块链中,对于每一个区块的产生,有一个方案是使用 PoW(工作量证明)。
这个方案需要使用巨大的算力才能够输出一个有效的区块,从而可以保障不可篡改。
投入到 PoW 矿业的大量计算资源和电力,如果用于科学研究、数据分析、医疗研究等其他领域,可能会带来更直接的人类福祉增益。
but,目前需要把这些巨大的资源用来计算一个区块。这个投入和产出的资源配比,的确很不好理解,也只能玩币的人能够下狠心。
比特币
比特币没有其他应用如 NFT 玩的花,比特币是完全遵守 区块链 的技术规则来实现的。
通过 https://bitinfocharts.com/bitcoin/ 可以查看当前比特币的一些信息,如区块链总区块数、大小、生成时间等。
区块
- 每个区块,都有一个 nonce(随机数),这个 nonce 可以保障区块被挖出来的时间在 10 分钟左右。通过定期(两周)可能性的调整 nonce 值来保障。
- 通过 nonce 计算出一个符合当前区块定义的值,就是说这个区块被挖掘出来了。这就是挖矿。挖矿就是挖每一个区块。
- 区块中记录 1000 - 2000 笔交易,其中第一行记录,就是当前挖矿的收益交易。
- 每个区块大约 2-4 M 左右,大约每 10 分钟产生一个区块。
交易
- 交易中包含交易 ID、input、output。input 就是来源账户,可能有多个账户。output 就是流向账户,可能有多个账户。
- input 中包含解锁脚本,用来解锁来源账户在上一个记录中的锁定脚本。output 中包含锁定脚本,用来供下一次交易的时候给 input 解锁脚本使用。
- 原理:把解锁脚本和锁定脚本合起来,通过比特币脚本运行器执行,能执行成功,则表示当前来源账号是有效的。即 A 用户可以消费 A 用户自己的钱,不能被 B 用户消费。
- 示例:A 持有 5 个比特币并支付给 B 2 个比特币:
- input:A
- output:A (3) + B (2) ⇒ 实际上:A (2.99) + B (1.99),0.02 是手续费。
- 对于上面的示例,实际上还有手续费,这些手续费是给矿工的。即矿工挖出来一个区块后,不仅得到了比特币奖励,还拿到了每一个交易的交易费用。
比特币地址
- 私钥生成公钥,公钥生成比特币地址。
- 比特币地址是公开的,即别人拿到该地址,就可以往这个地址打币。别人也可以检索区块链中的区块,查到该地址的资金来源和流向。
- 1 个用户可以持有 n 个比特币地址用于交易,这样可以保护隐私。也代表需要 n 个公私钥。
- 钱包的作用,就是管理公私钥和比特币地址。
- 钱包也可以通过 1 个私钥管理 1 个公钥和 n 个比特币地址。这样更方便一些,比较保存 1 个私钥和保存 n 个私钥的复杂度是不一样的。这个技术叫:HD。
- 将所有的比特币地址的 UTXO (剩余币) 总和计算出来,就是当前用户持有的币总量。
交易池
比特币网络中一个临时存储的区域,用来保存尚未被包括在区块中的有效交易。
A 向 B 支付币,这笔交易,首先进入交易池。其中记录了详细的且验证有效的交易信息以及费用(交易费,交易发起人可以指定奖励矿工多少费用)。
交易池在哪里:存储在 “全节点” 中。详见下面的【比特币链存储空间】。
交易流程
我 (A) 现在通过钱包向 B 支付了 0.5 比特币:
1 | 当你通过钱包向另一个用户(B)支付比特币时,整个过程涉及几个关键步骤,从创建交易到最终确认在区块链上的记录。以下是支付0.5比特币的技术流程: |
比特币链存储空间
目前 (2024.07.06),比特币链共计 850,932 个区块,每个区块生成时间 11m 10s,每个区块 800.35 KBytes,整个区块链 491.50 GB,第一个区块生成时间是 2009-01-09。
对于普通用户,不可能存储近 500G 的链在本地。但比特币本身又是去中心化的。原理是:
区块链存储有两种方式:
- 全节点:存储整个区块链数据,并实时新增。
- 轻节点:只保存区块头部的信息。来验证交易数据的正确性。比如手机钱包。
- 钱包是公司、个人、开源组织开发的,钱包虽然在手机、电脑上安装,但还是要访问对应的后台服务器。
- 后台服务器一般都是全节点存储区块链数据。
全节点
全节点,是软件,可以由大机构和个人或者开源组织发布。
当一个用户安装了全节点之后,就会拉取所有区块链数据并成为同步链中的一部分,包括新增区块、交易池等。
而且,安装了节点软件之后,基于节点发现算法,当前节点会被其他节点感知到。
这样,A 向 B 的交易转账,就会被同步到当前节点的交易池中,并在后期可能会被矿工拉取过去,成为区块计算的一部分。区块只要计算成功,就代表当前 A 向 B 的交易完成了。
以太坊
认识以太坊之前,需要先理解比特币。因为以太坊有很多和比特币相似的概念。但他们是为了不同的场景。
概念
- 区块链:和比特币的区块链概念相同。因为它们都是基于区块链自身的那些特性发展起来的,如 “不可篡改”。
- 以太币:是以太坊的核心之一。以太币和比特币在概念层级上等价。
- 智能合约:是以太坊的另一个核心(总共两个核心基础)。以太坊的区块链上不仅可以记录以太币,还可以记录智能合约。
- 区块链中的每一条记录都是交易,交易中可以仅有以太币的交易,还包含一个字段用来存储合约。
- 非智能合约的交易,该字段为空。
- 虚拟机 (Ethereum Virtual Machine, EVM):用来执行智能合约。
- 有一套计费标准。即合约的执行是需要消耗以太币的。
- 全局状态:是区块链的抽象层。
以太坊区块链
和比特币基本相同,有些许差异,如区块挖矿的标准不同、同一时间同样两个区块被挖出来后的处理结果不同(比特币:使用其中一个,以太坊:两个都使用,最多 7 层)。
还有就是,存储的数据不同。比特币主要是存储每一笔交易,其中第一个交易项是当前矿工的比特币奖励。以太坊存储的也差不多,不过里面多了一个字段,叫 “智能合约”,即代码。这个代码可以是通过 class 和 func 的形式定义,可以在后期被以太坊专门设计的 EVM 执行。
全局状态
比特币中,需要通过全节点,访问每一个区块才能知道某一个比特币地址的消费记录和余额。在以太坊中,查询数据不再需要遍历所有的区块了,因为有一个抽象层,记录了所有以太坊账号的最终结果,就是全局状态。
全局状态可以理解为是一个非常高效的多叉树,它记录了全量的最终数据,通过它,就可以快速获取某个账号的余额和智能合约。
在每个区块被挖出来后,就会更新这个全局状态。
所以,全局状态和区块链一样,是独立存储的。而且,它和区块链一起,被 全节点 持有。它们都是去中心化的。
实际上,全节点还有一个数据,和比特币一样,就是 “交易池”。所有待录入区块的交易,都会先存储与 “交易池” 中,等待被矿工验证和挖矿成功。
智能合约
智能合约,就是代码。一段通过 class 和 func 组成的图灵完备的 脚本,需要在 EVM 上部署。
它有一个研发生态,可以通过众多后台语言和前端语言进行调用和执行(执行需付费 - 以太币)。
这些代码存储在区块链中,保障不可更改等特性。
举个例子,背景是这样:A 将一个项目给 B 做,约定 B 完成 30%、70%、100% 的时候分别收到 3w、5w、2w 的以太币收款。
- A 或者 B 或者 第三方,写智能合约 (写代码),这个合约里面包含一系列的约定函数,如 stageA (…)、stageB (…)、stageC (…),这些函数中需要包含:验收、打款等细节操作。
- 创建一条交易,交易中包含 A、B、合约。
- 部署合约(需要部署在以太坊平台上)。
- 开发前端页面,比如有三个按钮 stage_a、stage_b、stage_c。每个按钮都执行对应的验收逻辑,并最终调用 合约 接口【stageA (xxx)】。
- 当 B 完成 30% 后,需要 A 验收并且通过,那么 A 就点击 stage_a 按钮,这个使用 stageA 合约 api 被执行,执行结果是将 A 账户的 3w 以太坊币打到 B 账户。
说明:
可以认为这样的合约没有用,比如 B 完成 30% 了,A 也验收通过了,但就是不去点 stage_a 按钮。这样的话,当前合约形同虚设。
但我们不能说这样的合约不存在,因为在区块链上,这是真实记录的,即 A 和 B 之间一定有这个合约。
但现在 A 就是不付款,这没有办法。即 智能合约 能够提供约定的准确性,但没有办法保障约定一定被执行。这是君子法则。
那智能合约和普通的合同相比,就显得操作流程更加复杂但价值也没有提升?
不。
普通的合同有可能丢失或者认为破坏了,但智能合约可以保障:它就在这里,当时什么样,现在也一定什么样。
还是得依靠【君子法则】。
代币
代币,是完全基于 “智能合约” 建立起来的。通过 faas 平台,来做各种类型的计算,从而实现业务逻辑,如 “币名称、发行币、交易”,就是调用 faas api。
ERC-20(通用代币标准)
USDT(泰达币) 是一个使用 ERC-20 标准的代币示例。它是一种稳定币,通常与美元的价值挂钩,这意味着每一个 USDT 通常值 1 美元。USDT 在加密货币交易中非常流行,因为它提供了一种相对稳定的资产存储方式,使交易者可以在不直接兑换成法币的情况下减少价格波动的风险。
ERC-721(非同质化代币标准)
NFT,常用于数字收藏品和艺术品。
DAO - 组织自治
也是基于智能合约。想不通,怎么就能往这方面硬挤(DAO 是不可能的)。
假设公司决定开发一个新的产品。你可以在 DAO 中启动一个提案,所有员工都可以投票决定是否启动这个新项目。如果多数人同意,智能合约将自动从公司的资金中划拨预算给这个项目。同样地,项目的进展更新和最终的成果也需要报告给 DAO,以便员工可以继续监督和投票决定后续的资金和资源分配。
- 提高透明度:由于所有的决策和交易都记录在区块链上,员工可以清楚地看到公司的每一笔支出和每一个决策。
- 增强员工参与感:员工直接参与到公司决策中,可以提高他们的归属感和积极性。
- 减少管理层:自动执行的智能合约减少了管理层的需要,降低了管理成本。
和 HTTPS 做对比
我们都知道 http 是不安全的,但是我们都相信 https 是安全的。
但 https 其实也不安全,为什么我们还相信它?
为什么不安全:
- 通过中间人 MITM,依旧可以解密本已经加密的数据并明文查看。
- 有 MITM 的存在,C 和 S 通过 https 传输的数据,依旧会被部分人看到。有两种场景:
- C 主动信任了 中间人 证书,主动查看数据。如开发人员。
- C 上当了,信任了黑客的证书。
- 基于以上两个场景,S 就没有办法信任 https 了,因为 S 给到 C 的数据可以被明文分析了。
- 方案一:将数据再次加密,使得中间人拿到加密后的数据。这里只能使用对称加密了,对称密钥也可能被从内存中挖取。本质上只是增加了破解的成本。
- 方案二:进一步做双向加密认证,使得中间人 MITM 失效。进一步的安全处理上会使用该方案。
- 所以,对于 https 而言,C 和 S 之间的数据依旧有可能被窃听。如何严格按照安全标准,https 也是不安全的。因为安全本身的定义,就是为了处理窃听风险。
为什么我们还是相信 https 协议:
- 我们认为 https 已经能够覆盖大部分安全场景了。
- 默认对开发人员和上当信任了黑客证书的人,不在关注了。
- 开发人员:看就看吧。
- 上当人员:上当就上当了吧,黑客你就看数据吧,防不了你。
https 的安全,是基于 TLS/SSL 实现的。https 是应用层,使用了 TLS/SSL 这套安全套件。
- https 调用 tls api,tls 完全安全验证后对数据加密,在调用 socket api 将数据给到 tcp 进行传输。
- tls 完成安全校验的前提是 tcp 安全通道的建立。
区块链 和 https 有很多相似的地方:区块链和 tls 处于同一个层级,而 比特币和以太坊 就如同 https 应用层协议。即 https 使用 tls,以太坊 基于 区块链 技术 。
- 区块链用来保障一个很重要的点:不可伪造。它保障了不可伪造,但上层应用基于这个不可伪造的特性,并不能 100% 的完成上层业务。
- A 通过 区块链 记录了一条向 B 借款 1w 的记录。
- 借款到期后,A 就是不还。A 和 B 以及所有人都知道 A 向 B 借了钱,但 A 就是不还。
- 通过区块链做了一个 NFT 数字画 J 并卖给了用户 M,用户 M 具有 J 的唯一权。但用户 N 依旧将数字画 J 印在广告上做产品宣传。
- 用户 N 就是盗版、侵权了,但法律的不完善可能无法制约这种行为。
- A 通过 区块链 记录了一条向 B 借款 1w 的记录。
- 为什么还相信区块链:
- 我们默认相信 https 是安全的。
- 我们以君子的视角来看待区块链本身。
所有的一切,都是以君子视角来看待。
币圈一骑红尘,智能合约改变世界,之前得依靠 “君子协议”。显然整个币圈,没有君子。
往后,还是得依靠法律,成为协议的保护神。
那有法律背书后,还要这些干什么呢?现在不就是有法律、律师、法院么。
只能说法律愿意来背书,让这个行业不灭,看看后面能不能有新的价值。