图片 2

3523 vip3522 vip

这得益于金马老师的辛苦付出,只有未使用的交易输出(UTXO)

26 3月 , 2020  

在比特币系统上其实并不存在“账户”,而只有“地址”。只要你愿意,你就可以在比特币区块链上开设无限多个钱包地址,你拥有的比特币数量是你所有的钱包地址中比特币的总和。比特币系统并不会帮你把这些地址汇总起来形成你的账户。从我(甲)到你(乙)的一笔比特币转账,是从我的一个钱包地址转到你的一个钱包地址上去。接下来的讨论就涉及比特币系统的一个关键技术性细节:UTXO(未使用的交易输出)。通证经济专家孟岩曾撰写一篇文章,标题是“其实没有什么比特币,只有UTXO”,这个标题指出了,对于计算机来说比特币是什么——比特币是区块链账本上的交易输出。我们来看一个两个人进行转账交易的过程,以深入理解UTXO:假设我有
8
个比特币,这其实意味着,之前有一个交易把这些比特币转入我的地址,这个交易的输出(即
8 个比特币)未被使用,我拥有了这 8
个比特币。现在,我要发起一个转账交易,这个交易中的输入是让我拥有这些比特币的上一个交易。我要转账给你,我做的是,对让我拥有这些
8
个比特币的上一个交易进行签名,把这一新转账交易的输出地址设为你的钱包地址。这样,我就发起了一个转账支付交易。等矿工将这一交易打包进新的区块,转账交易完成,这
8
个比特币就属于你了。你拥有的是你我这个交易的未使用的交易输出。对于一个交易签名所涉及的比特币的公钥和私钥的非对称加密机制,之后再讨论。为便于理解可类比看,钱包地址相当于房间号和锁,私钥则相当于钥匙,钥匙可以打开对应的锁。以上两个人的转账交易过程是:我用私钥(从一个输出是我的地址的交易中)取出比特币,并用私钥对从我的地址转到你的地址的新交易进行签名。一旦交易完成,这些比特币就转到你的钱包地址中去。你的钱包中新交易的未使用交易输出,只有你的私钥才可以打开。从以上讨论中我们可以看到,的确不存在比特币,只有未使用的交易输出(UTXO)。每一笔比特币都源自上一个交易,可以一直向上追溯上去。而一直向上追溯,在每一笔比特币的源头,都有一种特殊的交易,即比特币矿工因挖矿获得奖励的创币交易,每一个比特币都是通过挖矿被创造出来的。假设我作为比特币矿工挖矿成功赢得了
25 个比特币,那么这个特殊交易是,它的输入是 0,而输出是 25
个比特币进到矿工的钱包地址中。未使用的交易输出(UTXO)和我们熟悉的银行账户有着很大的不同。为什么要采用这样的设计?对比银行账户和比特币的
UTXO,我们可以看到 UTXO 的优点。

随着数字货币的火热,区块链技术成了人们口中讨论的热门话题,很玩家纷纷加入,但最近发现网络上大部分区块链文章,要么过于概念化要么就是谈及应用前景和行业判断的,很多新入币圈小伙伴很难真正理解,下面通过一笔完整的交易为大家介绍了区块链技术的完整生命周期。

这篇文章主要和大家介绍下比特币的交易过程。比特币底层技术要点:节点 /
交易过程 / 区块 / 区块头 / 区块形成 /
区块分叉比特币是不存在的比特币不存在与任何地方,包括你的电脑硬盘或者其他任何存储设备。你持有的比特币也只是拥有比特币的地址。这样的一个地址只是充当了一个银行账户,没有任何一个实物或者某个数据文件叫做比特币。比特币的所有交易都存放在巨大的账本文件中,这个账本就是区块链。你的“银行账户”(比特币地址)的余额,并不是直接存放在地址中,而是计算出来的。UTXO是比特币交易的基本单位先来一张“比特币之父”中本聪白皮书里的装逼图UTXO(Unspent
Transaction
Outputs)是未花费的交易输出,它是比特币交易生成及验证的一个核心概念。到底什么是UTXO?举例说明基于账户的支付系统:张三有一个余额
100
元的账户,李四有一个余额50元的账户。当张三要付给李四20元时,做以下操作:检查张三账户余额是否充足,如果不足20元就终止交易,向张三报“余额不足”在张三账户里减去20元在李四账户里增加20元举例说明UTXO的支付系统:张三挖到12.5
枚比特币。过了几天,他把其中 2.5
枚支付给李四。又过了几天,他和李四各出资 2.5 比特币凑成 5
比特币付给王五。那么,三人的账户变化情况使用UTXO记录如下:对比特币的区块链账本来说记录的只是3笔交易记录。资金来源就是每笔交易的交易输入,资金去向就是每笔交易的交易输出。每一笔交易都要花费(Spend)一笔输入,产生一笔输出,而其所产生的输出,就是“未花费过的交易输出”,也就是
UTXO。被斯坦福大学密码学和计算机安全教授 Dan Boneh 评价为“extremely
brilliant”的中本聪的三个伟大创新:一个是区块链的设计,一个是UTXO,一个是智能合约。比特币的私钥比特币的地址是随机生成的一串字符串,好像一个透明的存钱罐,谁都可以看到。私钥也是一串保密的字符串,犹如一把钥匙,只有持有私钥的人才能打开这个存钱罐。为什么交易需要等待10分钟?比特币协议里面设置了挖矿完成的大概时间是10分钟。所以商家可能会等到你的交易所在的区块被确认之后才会给你发货。但是也有商家不会让你去等,基于对你的一个信任,相信你不会在交易没有得到确认之前有去拿同一笔钱花在别的地方。不过一般这只适用于小额交易。10分钟是被中本聪设计的时间,考虑计算并验证一笔交易后传播到全部互联网需要几分钟的时间,为了避免“矿工A和矿工B在不知道对方都计算出结果的情况下同时发送计算结果”的情况,都假设需要10分钟才可以完成计算。​交易过程中的手续费目前,很多矿工都不收手续费。但是随着每次挖矿成功系统奖励给矿工的币不断减少,未来肯定会有更多的矿工会收取手续费的。有些钱包可以让你手动设置手续费。交易中那部分没有被对方收到,同时也没有找零回来的就是手续费。这笔钱最终会被得到记账权的那个幸运的矿工所得到。(原标题:一篇文章读懂比特币:区块链底层技术之交易过程)本文由
@ 区块链老垚 原创发布于人人都是产品经理。未经许可,禁止转载。

十几天前看不懂《精通比特币》这本书,现在听了直播(1—5章)明白了,这得益于金马老师的辛苦付出,向金马老师说声谢谢!

2.6区块链

图片 1

比特币有2层含义:

区块链就是一个一个区块链起来。

基本常识:

1、比特币是第一个区块链实现;

区块一块块产生,每次解当前的区块都会为之前的交易增加一次证明,也在网络中得到了更多的信任。

区块链不等于比特币,区块链只是比特币系统用来记录交易信息的账簿;

2、也是一种数字货币,没有实体,存在数字钱包中,谁有打开钱包的私钥,谁有权取钱花钱。

随着链的增长,计算复杂度不断增加,以往的区块也就越来越难以删改,(一个区块获得6次以上证明就基本不可能撤销了)。所以验证一个交易有效的简单手段就是确定这个交易在区块链中,后面有几个新的板块。

比特币没有账户余额的概念,所有的交易只记录资金的来源和去向,所谓账户余额是区块链中计算出来的结果;

矿工和挖矿

写好的区块就像泼出去的水。此外,我们可以通过区块链顺藤摸瓜追溯每一笔历史交易,这也保证了比特币的来源都是清晰有记录的。

挖矿奖励是为了维护整个系统鼓励人们利用自己设备的算力资源来共同验证每笔交易的有效性而给予的奖励;

比特币的分布形式计算:相当于央行把货币发行和结算的任务分配给了每一个参加挖矿比赛的人。

第三章:比特币客户端

交易的完整过程:从创建新交易到新区块产生

央行发行人民币,而比特币是“挖矿”产生的。挖矿是一种数学算力的比赛,谁先解开数学题,就奖励给谁比特币。

3.1完整客户端

假设一笔比特币交易 A 一旦被创建,它的生命周期就开始了。随后,交易 A
会被一个或者多个签名加密(这些签名用来说明交易 A

同时每个矿工们还在验证和记录交易,只有交易信息被矿工们“挖矿”验证并加在一个区块中,这个交易才能成为总帐本的一部分。

自己维护一个全节点客户端成本比较高,但是可以保证安全,大客户比较实用。

的资金流向是被资金的拥有者所许可的)。而后,交易 A

挖矿的过程其实就是将过去一段时间的交易记录打包成一个区块,这个过程还同时创造新的比特币。

从bitcoin.org下载的客户端包含了比特币系统的各个方面,是一个独立的完整节点。但是正因为包含了所有历史数据,下载整个区块链就需要好几天,需要足够容量的硬件,带宽,和时间。

被广播到比特币网络中,最快收到广播信息的是相邻的2-3个节点,这些节点都会参与验证这笔交易,于此同时将交易在网络中再次进行广播,直到这笔交易
A

挖矿是基于哈希加密算法(Hash)的解题过程,解题困难而验证容易,这也是比特币游戏解密游戏的最大特点。

3.2编译比特币源码

被网络中大多数节点(所有下载比特币客户端的设备都有可能成为这样的节点)接收。

矿工们也是组队解题,赢了就按工作量分配收获的比特币。

对于开发者,可以从GitHub上比特币页面下载代码自行编译,从终端运行bitcoind,也需要下载所有区块。

最终,交易 A 被一个正在参与挖矿的节点验证,交易 A
连同其它一些近期被创建的交易一起被打包到一个区块 B

交易产生的交易费也是矿工们的劳务费。交易费的多少会影响处理的优先级,有足够费用的交易会更早被包含在下一个挖出的区块中,也就更早得到确认和验证,可以早一点得知交易成功就可以早一点洗洗睡了。

比特币核心的JSON-RPC API 接口的使用,包括以下技能点。

中,并被添加到区块链上,这时整个区块链就被延长并新增了一个区块 B 。区块
B 获得 6

比特币的几个特点:

1.获取比特币核心客户端状态信息;

次以上的“确认”时就被认为是不可撤销的,因为要撤销和重建六个区块需要巨量的计算,交易被打包在一起放进区块中时需要极大的计算量来证明,但只需少量计算就能验证它们已被证明。

1、通胀让钱贬值,而比特币由于数量恒定就2.1千万枚开采速度每4年减半,直到2140年采完,所以比特币呈现通缩,因此持有比特币可以对抗法币的通胀。

2.钱包设置及加密;

图片 2

2、法币是中心化的,而比特币是去中心化的,直接点对点交易而且同时有无数的帐本去中心化形式同步记录在各个区块链中。

3,钱包备份,纯文本导出和恢复;

我们将上面的交易过程描述简单细分为以下 6 个步骤:

区块链的最大优势和特点:比特币本身就是一个全网共同维护的公共交易帐本,几乎无法篡改;比特币是一个确定性的数字货币发行银行,一个去中心化的交易验证系统,纸币会被复制,比特币因为数学验证机制不会出现这样的“双重支付”。

4.钱包地址及接收交易;

产生新交易

比特币的交易基本有两种方式:一种是“完整客户端”维护,完全自己保存交易信息,一种是通过第三方服务器来获取交易信息如:云币网,okcoin等等。

第四章:密钥,地址,钱包

签名加密

使用比特币客户端:客户端通常有一个钱包和多个比特币地址组成,地址是公开的,任何人都可以通过地址转钱到你的钱包,发送比特币只需要输入地址和金额,收到钱的人会用私钥签收这笔交易,而这样也广播了全网:比特币从一个地址转移到了另一个地址。从交易完成到确认大概需要10分钟,交易过程必须有矿工打包成区块,才会被全网接受“已确认”。

4.1密钥

交易在比特币网络中传播

私钥:比特币地址就像一个带锁的信箱,开锁的钥匙就是私钥,比特币地址是公开的,每个人都能往这个地址发钱,但只有私钥持有者才能取钱,因此私钥保管好至关重要。

比特币交易需要用有效的“数字密码”产生的签名认证。

整合交易&构建新区块

比特币交易过程:a向b的比特币地址发了1枚btc,然后向全网吼了一声:我向能打开这把锁的人发了1btc,b收到信息,用私钥打开这把锁,取钱。

密码是成对出现的,由一个“私钥”和一个“公钥”所组成。公钥就像银行的账号,

挖矿

将交易记录在总帐本中

而私钥就像控制账户的PIN码或支票的签名。

新区块连接到区块链

交易信息必须被传送到比特币网络中,成为总帐本的一部分,这个帐本叫区块链。

公钥用来接收比特币,私钥用来对收到的比特币签名。公钥可以有私钥唯一产生,但是知道公钥却不能反向推导出私钥,这就保证了比特币的安全性。这也是密码学上的非对称加密。

接下来,我们将详细分析 6

“区块”里记录了一段时间里所有的交易信息,“链”则是因为所有的历史数据块会一个个串联起来。

4.2地址

个交易步骤中的具体细节和所采用到的底层技术,在解释每个步骤和具体的概念时,我都将举出适当的例子来帮助理解,如果依然没有读懂,那肯定是你看的太快了……

完整客户端:自己维护一个全节点客户端成本较高,安全性好,大客户使用,但一般客户在硬件、带宽,时间上都不理想。

比特币的地址是通过账户主人的公钥产生的,只需要把比特币地址告诉其他人,别人就可以给你转账。

01 产生新交易

比特币核心的Json-RPC 
API接口的使用,包括以下技能点:1、获取比特币核心客户端状态信息;2、钱包设置和加密;3、钱包备份,纯文本导出和恢复;4、钱包地址及接受交易。

4.3私钥,公钥,比特币地址之间的关系

当隔壁老王想要将自己钱包中的一个比特币转账给老张时,这个交易就被老王的钱包所构建了。

密钥:比特币需要有效的“数字密码”产生的签名认证。密码是成对出现的,有一个“公钥”和一个“私钥”组成。公钥就像银行账号,而私钥就像控制账户的PIN码或支票的签名。公钥接受比特币,私钥签名接受。

从私钥可以唯一生成公钥,公钥可以生成比特币地址。但反向都是解不出来的。私钥必须始终保持机密,丢了私钥就相当于丢了比特币。

将一笔比特币交易理解成纸质支票有助于我们的理解,一笔比特币交易是一个有着货币转移目的工具,

地址:比特币地址告诉别人,别人可以转账给你。

4.4钱包和助记词

如同当收款人或持票人拿着支票到银行时,银行会无条件支付其规定数量的金额。并且交易发起人并不一定是签署该笔交易的人。

私钥可以生成公钥,公钥可以生成比特币地址,但反向都是解不出来的,私钥必须始终保持机密,丢了私钥就相当于丢了比特币。

由于完全无规律的密钥相对不便于维护和记忆,,现在的钱包多是从一个“种子”出发生成许多关键的钥匙,子子孙孙地繁衍出新的密钥。

比特币交易可以被任何人在线上或线下创建,即便创建这笔交易的人不是这个账户的授权签字人。就像一家企业中秘书开出的这张支票(发起交易),需要等待Boss签署该笔交易(数字签名)。

钱包和助记词

种子可以是随机生成的数字,也可以用助记词来生成。单词的顺序就是钱包的钥匙。助记词可以让人们更容易抄写和备份。

有以下 4 个概念需要展开理解,用以更加深入地理解“新交易构建”的一些细节:

现在钱包多由“种子”出发生成许多关键的钥匙,子子孙孙繁衍出新的密钥。

这里特别提醒的是助记词由于能重新创建种子恢复钱包,所以助记词一定要妥善保管。不少人使用imToKen的时候给助记词截了图,导致钱包信息泄露。切记不要截图,最好是抄下来。

UTXO

种子可以是随机生成的数字,也可以用助记词生成。单词的顺序就是钱包的钥匙。助记
词可以让人们更容易抄写和备份。助记词能重新创建种子恢复钱包,所以助记词一定要特别保管好,千万不能截图,导致钱包信息泄露就会丢币,最好把助记词手抄下来。

4,5椭圆曲线加密(从私钥到公钥)

交易输出

椭圆曲线加密(从私钥到公钥)

通过椭圆曲线加密算法,可以从私钥计算得到公钥,这是不可逆转的过程:K=k*g,其中k是私钥,G是被称为生成点的常数点,而k是所得公钥。

交易输入

通过椭圆曲线加密算法,可以从私钥计算得到公钥,这是不可逆的过程。

我们用一个例子来理解椭圆曲线加密。小明上小学二年级,会计算加法,但是不会计算除法。问小明:“1+1=?”“=2”

交易费

哈希函数(从公钥到比特币地址)

      “7+7=?”“=14”

UTXO

比特币地址是由公钥经过单向的哈希函数生成的。

      “7*?=56” “……?”小明艰难的用加法算出来了。“=8”

UTXO易于理解的说就像是账户的余额。它是比特币交易的基本单位,是未经使用的一个交易输出,Unspent
Transaction

哈希(Hash)函数是一种数据编码方式,将大尺寸的数据(如一句话、一张图片、一段音乐、一个视频等)浓缩到一个数字中,从而方便的实现数据匹配,查找的功能。

        “几个7相加=8…..92”,小明当然算不出来坏叔叔出的题。


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图