本系列教程的目的是帮助您了解如何开发区块链技术. 在本教程中,我们将: 创建你的第一个(非常)基本的“区块链”. 实施简单的工作证明(采矿)系统. 惊叹于可能性. (我假设您对面向对象编程有基本的了解) 需要注意的是,本教程并没有生产区块链的完整功能.相反,这是一个概念实现的证明,以帮助您理解区块链,为以后的教程打基础. 1,安装 教程中使用 Java,当然你可以使用其他的面向对象编程语言. 开发工具是 Eclipse,同样你可以使用其他的文本编辑器(虽然你可能会错过很多好用的功能 . 你需要:…
本系列教程的目的是帮助您了解如何开发区块链技术. 在这第二个教程中,我们将: 创建一个简单的钱包: 使用我们的区块链发送已签名的交易: 感觉更酷. 以上这些将使我们拥有自己的加密货币! 从上一个教程开始,我们有一个基本可验证的区块链.但是目前我们的区块链只存储了些相当无用的信息.今天我们将用交易数据代替这些无用信息(我们每个区块可以容纳多个交易信息).我们将创建一个非常简单的加密货币,称之为“NoobCoin”. 本教程假设您已经进行了教程1中的操作. 依赖关系:您需要导入 bounceycas…
写这篇随笔主要是尝试帮助自己了解如何学习区块链技术开发. [本文禁止任何形式的全文粘贴式转载,本文来自 zacky31 的随笔] 目标: 创建一个最基本的"区块链" 实现一个简单的挖矿系统 前提: 对面向对象编程有一定的基础 注意: 值得注意的是,这不会是一个完整的功能,恰恰相反,这是一个概念证明的实例,可以帮助您进一步了解区块链. 准备: 我将会使用Java来实现,当然你也可以使用任何面向对象的语言. 环境: JDK 8 IDEA Maven 开始吧 区块链就好比多个块连接起来.其中…
原文地址:https://www.cnblogs.com/zacky31/p/9057193.html 目标: 创建一个最基本的“区块链” 实现一个简单的挖矿系统 前提: 对面向对象编程有一定的基础 注意: 值得注意的是,这不会是一个完整的功能,恰恰相反,这是一个概念证明的实例,可以帮助您进一步了解区块链. 准备: 我将会使用Java来实现,当然你也可以使用任何面向对象的语言. 环境: JDK 8 IDEA Maven 开始吧 区块链就好比多个块连接起来.其中每一块都将拥有自己的签名,签名中包含…
在本系列前两篇文章中,我们向大家展示了如何通过精炼的Java代码实现一个简单的区块链.包括生成块,验证块数据,广播通信等等,这一篇让我们聚焦在如何实现 PoW算法. 大家都无不惊呼比特币.以太坊及其他加密电子货币的持续狂热,特别是对于刚接触这个领域的新手,不断得听到张三李四通过 GPU “挖矿”而聚集价值数万乃至数百万加密电子货币.那么“挖矿”到底是什么? 它是如何工作的? 相信对于程序员来说,没有什么比自己动手实践一遍“挖矿”算法更好的学习办法了. 在这篇文章中,让我们一起逐个解读每一个问题,…
这篇文章将去介绍如何使用区块链进行交易. [本文禁止任何形式的全文粘贴式转载,本文来自 zacky31 的随笔] 目标: 在上一篇文章中,我们已经创建了一个可信任的区块链.但是目前所创建的链中包含的有用信息还是比较少的.今天,我将会用交易信息来替换之前的 data 内容,我将会创建一个简单的加密货币,叫作 "noobcoin". 前提: 已经了解了区块链基本知识 用到 GSON 和 bounceycastle  开始吧 在加密货币中,货币的所有权将会以交易的方式被传递,参与交易的人将会…
区块链是目前最热门的话题,广大读者都听说过比特币,或许还有智能合约,相信大家都非常想了解这一切是如何工作的.这篇文章就是帮助你使用 Java 语言来实现一个简单的区块链,用不到 120 行代码来揭示区块链的原理! “用不到120行 Java 代码就能实现一个自己的区块链!” 听起来不可思议吧?有什么能比开发一个自己的区块链更好的学习实践方法呢?那我们就一起来实践下! 因为我们是一家从事互联网金融的科技公司,所以我们采用虚拟资产金额作为这篇文章中的示例数据.大家可以先为自己想一个数字,后面我们会用…
已经看完第一章的内容了吗,欢迎回来. 上一章我们介绍了关于怎么去编写自己的区块链,完成哈希和新块的校验.但是它只是在一个终端(结点)上跑.我们怎么样来连接其他结点以及贡献新的块呢,怎么样广播到其他结点告诉他们要更新区块了呢? 本章就是要告诉你这些. // 区块链的核心部分// 维护一个在启动时可以连接的对等节点列表.当一个完整的节点第一次启动时,它必须被自举(bootstrapped)到网络.// 自举过程完成后,节点向其对等节点发送一个包含其自身IP地址的addr消息.其对等的每个节点向它们自…
区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块.(百度百科)        区块链本身的结构是非常简单的,其复杂的部分在于他的共识机制,加密等部分.我们可以将区块链看做一种数据结构,顾名思义,区块链就是把许多个区块(Block)链接在一起,成为一个链式结构(Chain).所以我们要做的事情也很简单…
第一笔数据与第二笔数据比较 Map<String, Object> jHpictureMap = new HashMap<String, Object>(); // 存放照片SID StringBuilder jHpictureIds = new StringBuilder(); for (int i = 0 , size = jHActualPictureList.size(); i < size; i++) { // 当前笔 Map<String, Object&g…