天天看点

比特币开发——1.简介

介绍

比特币网络中的每个完整节点独立地存储仅包含由该节点验证的块的区块链。当几个节点的区块链中都具有相同的块时,它们被认为是一致的。这些节点为了保持共识遵循的验证规则称为共识规则。本节介绍比特币核心使用的许多共识规则。

区块链概述

比特币开发——1.简介

上图显示了块链的简化版本。将一个或多个新交易的块收集到块的交易数据部分中。对每个交易的副本进行哈希处理,然后对哈希进行配对,再哈希并再次配对,接着再次进行哈希处理,直到单个哈希值仍然存在,即merkle树的merkle根。

merkle根存储在块的头部中。每个块还存储前一个块的头部的哈希值,将块链接在一起。这样就可确保在不修改记录它的块和所有后续块的情况下是无法修改交易的。

交易也链接在一起。比特币钱包软件给人的印象是satoshis从钱包发送到钱包,但比特币真的从交易转移到交易。每个交易花费先前在一个或多个先前交易中接收的satoshis,因此一个交易的输入是先前交易的输出。

交易发送

单个交易可以创建多个输出,就像发送到多个地址时的情况一样,但是特定交易的每个输出只能在块链中用作输入一次。任何后续接口都是禁止的双重花费——尝试两次花费相同的satoshis。

输出与交易标识符(TXID)相关联,后者是签名交易的哈希值。

由于特定交易的每个输出只能使用一次,因此块链中包含的所有交易的输出可以分类为Unspent Transaction Outputs(UTXO)或花费的交易输出。要使付款有效,它必须仅使用UTXO作为输入。

忽略coinbase交易(稍后描述),如果交易的输出值超过其输入,交易将被拒绝:但如果输入超过输出值,则任何价值差异都可能被比特币作为交易费用索赔创建包含该交易的块的矿工。例如,在上图中,每笔交易花费10,000 satoshis比从其组合输入收到的少,有效支付10,000 satoshi交易费。

分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:

  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。

汇智网原创翻译,转载请标明出处。这里是原文比特币开发

继续阅读