转载:http://www.showmuch.com/article/article_117.html
Bitcoin 电子货币系统的核心功能是面对面(点对点)支付,就像真实货币一样,无需中间人,几乎不需要交易费。它背后的技术实现是很巧妙的通过将造币(Mint),交易(transaction,这里提到的交易都是特指的支付),交易验证(transaction verifiction)交织在一起,形成一个完美的圆。所以要想把它的机理理解清楚,就必须同时理解bitcoin的电子货币,交易,造币的确切含义。
首先从电子货币谈起。
电子货币和交易单(Transaction)
Bitcoin电子货币解决的是:
- 任意造币的问题:通过“挖矿”机制保证了不能任意造币。
- 重复花钱的问题(Double-Spending):利用P2P网络,通过HashCash的机制。
事实上Bitcoin系统中不存在独立的电子货币,货币值是依附于交易单存在的,所以在bitcoin中的电子货币的实质就是交易单,确切的说是货币交易(Transactions)的 数字签名链,它的数字签名算法使用的是ECDSA(椭圆曲线数字签名算法 secp256k1曲线)进行签名的。
交易单的数据如下:
In:
Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd0
4470b9a6
Index: 0
scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446
618c4571d1090db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fd
d7d5d6cc8d25c6b241501
Out:
Value: 5000000000
scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35
549d OP_EQUALVERIFY OP_CHECKSIG
交易单记录的是本次交易的收入来源(in)和支出(out)。当你支出(给)一笔钱的时候,首先在交易单中就要描述清楚你要支出(out)的钱的收入来源(in),然后在支出(out)项中,指明要支出的金额,以及通过脚本的形式写明接收者的公钥,然后用自己的私钥签名(scriptSig)认可该笔交易,最后将交易单广播到网络。
收入来源(in):
- Previous tx: 为收入来源交易单的散列值,也就是待支付的钱是谁给你的,经常会有多个收入来源被列在交易单中
- index: 指明是收入来源交易单中具体哪一个out,也就是Previous tx交易单中的out索引值(因为out也可以有多个)。
- scriptSig: 拥有者对该交易的ECDSA签名认可。
接收对象(out):
- Value: 发送的币值,以Satoshi 为单位,1BTC = 100,000,000 Satoshi
- scriptPubKey: 接收方的公钥脚本。
in与out的关系:
- 每一笔交易,out的总额应该等于in的总额。但是,在这个交易单里,只会有out的Value,没有in的Value,而是通过in的Pervious与index,追溯到上一个交易单的某一个out,获得Value。
- 一次send bitcoin,剩下的钱,应该out给自己,否则这个钱就丢了。
情况列举:
分享到:
相关推荐
bitcoin挖掘机全部开源。。。有原理图、PCB板和固件、BOM
一个用于 Bitcoin 加密货币的核心集成和暂存树。作为 Bitcoin 协议的官方实现,这个项目提供了一个基础平台,供开发者参与 Bitcoin 网络的开发...它支持比特币的核心功能,并为整个加密货币生态系统的发展提供了基础。
bitcoin技术白皮书bitcoin技术白皮书bitcoin技术白皮书
白皮书详细阐述了一种不需要中间金融机构参与的电子货币系统,该系统可以防止双重支付,即同一笔资金被重复消费的问题。 在传统的金融体系中,金融机构担任着可信赖的第三方角色,来确保电子支付的安全性。然而,...
bitcoin0.3.0源代码,谢谢,20个字,谢谢。
master bitcoin,master bitcoin,master bitcoin 区块链 的好书
通过对Bitcoin,Ethereum,Fabric的技术原理分析,自底而上的介绍区块链底层技术原理。
bitcoin算法之一的源代码,我是从其他网站花了银子下载下来的,我自己提取并移植的有用的部分在使用,希望对大家有帮助
bitcoin RPC节点配置文件示例
本文将详细介绍如何在 Ubuntu 16.04 系统上进行 Bitcoin 0.13 版本的源码编译过程,并记录在此过程中遇到的一些常见问题及其解决方法。 #### 一、环境准备 为了能够在 Ubuntu 16.04 上成功编译 Bitcoin 0.13 的源...
This is a simple bitcoin wallet application that can help those who are getting started with bitcoin programming using python. In this project I use python version 3.6 and Pycharm. File free to fork ...
bitcoin客户端 2013年官方最新版
在数字货币领域,比特币(Bitcoin)作为一种去中心化的加密货币,其底层技术——区块链,受到了广泛的关注。而与比特币交互的一种常见方式就是通过远程过程调用(RPC,Remote Procedure Call)。本文将详细介绍如何...
bitcoin算法之一的源代码,我是从其他网站花了银子下载下来的,我自己提取并移植的有用的部分在使用,希望对大家有帮助
princeton_bitcoin_book
在Ubuntu系统中编译Bitcoin涉及一系列步骤,包括安装必要的依赖库、下载源码以及编译和安装过程。下面是详细的步骤: 1. **安装基础依赖**: 首先,你需要确保系统拥有编译和构建软件的基础环境。通过运行以下命令...
java-bitcoin rpc所需的jar,有问题请联系我
Bitcoin 源码分析文档 本文档对 Bitcoin 源码进行了深入分析,涵盖了 Bitcoin 源码中各个模块的关联关系图、各个模块类关系图等。下面是对 Bitcoin 源码分析文档中所涉及的知识点的详细说明: 术语介绍 在 ...