基于Java语言构建区块链(七)—— 交易脚本(智能合约)

上一篇 文章我们引入 UTXOset 和 Merkle Tree 对交易流程做了些许优化,本篇文章我们将介绍比特币另一个更加重要的机制 —— 交易脚本。

在介绍 UTXO的文章 中,我们已经了解到比特币的交易输出由锁定脚本锁定,它只能被交易输出所被指向的交易输入中的解锁脚本所解锁,今天让我们来详细讨论一下它们的实现机制。

阅读更多

基于Java语言构建区块链(六)—— 交易(Merkle Tree)

文章的主要思想和内容均来自 https://jeiwan.cc/posts/building-blockchain-in-go-part-6/

引言

在这一系列文章的最开始部分,我们提到过区块链是一个分布式的数据库。那时候,我们决定跳过”分布式”这一环节,并且聚焦于”数据存储”这一环节。到目前为止,我们几乎实现了区块链的所有组成部分。在本篇文章中,我们将会涉及一些在前面的文章中所忽略的一些机制,并且在下一篇文章中我们将开始研究区块链的分布式特性。

阅读更多

基于Java语言构建区块链(五)—— 地址(钱包)

文章的主要思想和内容均来自 https://jeiwan.cc/posts/building-blockchain-in-go-part-5/

引言

在 上一篇 文章当中,我们开始了交易机制的实现。你已经了解到交易的一些非个人特征:没有用户账户,您的个人数据(例如:姓名、护照号码以及SSN(美国社会安全卡(Social Security Card)上的9 位数字))不是必需的,并且不存储在比特币的任何地方。但仍然必须有一些东西能够识别你是这些交易输出的所有者(例如:锁定在这些输出上的币的所有者)。这就是比特币地址的作用所在。到目前为止,我们只是使用了任意的用户定义的字符串当做地址,现在是时候来实现真正的地址了,就像它们在比特币中实现的一样。

阅读更多

基于Java语言构建区块链(四)—— 交易(UTXO)

文章的主要思想和内容均来自 https://jeiwan.cc/posts/building-blockchain-in-go-part-4/

引言

上一篇 文章,我们实现了区块数据的持久化,本篇开始交易环节的实现。交易这一环节是整个比特币系统当中最为关键的一环,并且区块链唯一的目的就是通过安全的、可信的方式来存储交易信息,防止它们创建之后被人恶意篡改。今天我们开始实现交易这一环节,但由于这是一个很大的话题,所以我们分为两部分:第一部分我们将实现区块链交易的基本机制,到第二部分,我们再来研究它的细节。

阅读更多

基于Java语言构建区块链(三)—— 持久化 & 命令行

文章的主要思想和内容均来自:https://jeiwan.cc/posts/building-blockchain-in-go-part-3/

引言

上一篇 文章我们实现了区块链的工作量证明机制(Pow),尽可能地实现了挖矿。但是距离真正的区块链应用还有很多重要的特性没有实现。今天我们来实现区块链数据的存储机制,将每次生成的区块链数据保存下来。有一点需要注意,区块链本质上是一款分布式的数据库,我们这里不实现”分布式”,只聚焦于数据存储部分。

阅读更多

基于Java语言构建区块链(二)—— 工作量证明

文章的主要思想和内容均来自 https://jeiwan.cc/posts/building-blockchain-in-go-part-2/

引言

在上一篇文章中,我们实现了区块链最基本的数据结构模型,添加区块以及和前一个区块连接在一起。但是,我们的实现方式非常简单,而真实的比特币区块链中,每一个区块的添加都是需要经过大量的计算才可以完成,这个过程就是我们熟知的挖矿。

阅读更多

基于Java语言构建区块链(一)—— 基本原型

引言

区块链技术是一项比人工智能更具革命性的技术,人工智能只是提高了人类的生产力,而区块链则将改变人类社会的生产关系,它将会颠覆我们人类社会现有的协作方式。了解和掌握区块链相关知识和技术,是我们每位开发人员必须要去做的事情,这样我们才能把握住这波时代趋势的红利。
本文将基于Java语言构建简化版的blockchain,来实现数字货币。

阅读更多