写这篇随笔主要是尝试帮助自己了解如何学习区块链技术开发. [本文禁止任何形式的全文粘贴式转载,本文来自 zacky31 的随笔] 目标: 创建一个最基本的"区块链" 实现一个简单的挖矿系统 前提: 对面向对象编程有一定的基础 注意: 值得注意的是,这不会是一个完整的功能,恰恰相反,这是一个概念证明的实例,可以帮助您进一步了解区块链. 准备: 我将会使用Java来实现,当然你也可以使用任何面向对象的语言. 环境: JDK 8 IDEA Maven 开始吧 区块链就好比多个块连接起来.其中…
这篇文章将去介绍如何使用区块链进行交易. [本文禁止任何形式的全文粘贴式转载,本文来自 zacky31 的随笔] 目标: 在上一篇文章中,我们已经创建了一个可信任的区块链.但是目前所创建的链中包含的有用信息还是比较少的.今天,我将会用交易信息来替换之前的 data 内容,我将会创建一个简单的加密货币,叫作 "noobcoin". 前提: 已经了解了区块链基本知识 用到 GSON 和 bounceycastle  开始吧 在加密货币中,货币的所有权将会以交易的方式被传递,参与交易的人将会…
原文地址:https://www.cnblogs.com/zacky31/p/9057193.html 目标: 创建一个最基本的“区块链” 实现一个简单的挖矿系统 前提: 对面向对象编程有一定的基础 注意: 值得注意的是,这不会是一个完整的功能,恰恰相反,这是一个概念证明的实例,可以帮助您进一步了解区块链. 准备: 我将会使用Java来实现,当然你也可以使用任何面向对象的语言. 环境: JDK 8 IDEA Maven 开始吧 区块链就好比多个块连接起来.其中每一块都将拥有自己的签名,签名中包含…
我是如何从Java转型为Go区块链工程师 本文来自于一个比原链核心开发的陈述 前言 IT部落在加入比原链之前一直是做Java开发的,当初看到Go还有点犹豫,还怕过不了面试,结果是否掌握一门语言的考量确实没那么高,我顺利入职比原链,并在半个月内很快掌握Go并能够进行核心项目的开发. Java语言在较大的成熟项目上具有优势,但是在区块链开发中确实会有很多短处,比如在协程处理上,还有Java语言本身不够灵活等等,当然选择使用Go主要是因为其在区块链的流行程度. 区块链的流行语言 在区块链公链的开发圈子…
用 Java 实现简单的区块链 1. 概述 本文中,我们将学习区块链技术的基本概念.也将根据概念使用 Java 来实现一个基本的应用程序. 进一步,我们将讨论一些先进的概念以及该技术的实际应用. 2. 什么是区块链? 因此,让我们首先了解到底什么是区块链... 它的起源可以追溯到2008年 Satoshi Nakamoto 在比特币上发布的白皮书. 区块链是一个分散的信息分类账.它由通过使用密码学连接的数据块组成.它属于通过公共网络连接的节点网络.当我们稍后尝试构建一个基本教程时,我们会更好地理…
本系列教程的目的是帮助您了解如何开发区块链技术. 在这第二个教程中,我们将: 创建一个简单的钱包: 使用我们的区块链发送已签名的交易: 感觉更酷. 以上这些将使我们拥有自己的加密货币! 从上一个教程开始,我们有一个基本可验证的区块链.但是目前我们的区块链只存储了些相当无用的信息.今天我们将用交易数据代替这些无用信息(我们每个区块可以容纳多个交易信息).我们将创建一个非常简单的加密货币,称之为“NoobCoin”. 本教程假设您已经进行了教程1中的操作. 依赖关系:您需要导入 bounceycas…
本系列教程的目的是帮助您了解如何开发区块链技术. 在本教程中,我们将: 创建你的第一个(非常)基本的“区块链”. 实施简单的工作证明(采矿)系统. 惊叹于可能性. (我假设您对面向对象编程有基本的了解) 需要注意的是,本教程并没有生产区块链的完整功能.相反,这是一个概念实现的证明,以帮助您理解区块链,为以后的教程打基础. 1,安装 教程中使用 Java,当然你可以使用其他的面向对象编程语言. 开发工具是 Eclipse,同样你可以使用其他的文本编辑器(虽然你可能会错过很多好用的功能 . 你需要:…
[C#] 使用 C# 编写自己区块链的挖矿算法 文章原文来自:Code your own blockchain mining algorithm in Go! ,原始文章通过 Go 语言来实现的,这里仍然是承接上一篇文章,来使用 C# + .Net Core 实现我们的挖矿算法. 强烈建议阅读前先阅读这篇文章 什么是加密货币挖掘? 一个加密货币的价值体现在它的稀缺性上,如果任何人都可以任意构造一个比特币,那么比特币就毫无价值,所以比特币的区块链会让参与者完成一项"工作",根据这个工作的…
技术:maven3.0.5 + jdk1.8   概述 区块链是分布式数据存储.点对点传输.共识机制.加密算法等计算机技术的新型应用模式.所谓共识机制是区块链系统中实现不同节点之间建立信任.获取权益的数学算法 . 详细 代码下载:http://www.demodashi.com/demo/14933.html 前言 使用java创建第一个非常基本的区块链 实现一个简单的工作量证明系统即挖矿 创建区块链 区块链就是一串或者是一系列区块的集合,类似于链表的概念,每个区块都指向于后面一个区块,然后顺序…
如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建.钱包创建.交易转账,交易与状态.智能合约开发与交互.过滤器和事件等,同时也详细说明如何使用web3j提供的API开发接口与以太坊进行交互,是java工程师学习以太坊应用开发的不二选择. 以太坊概述 以太坊是备受关注的区块链,它基于密码学技术和P2P通信技术 构建了一个去中心化的平台,所有的交易同步保存在每个节点中, 通过将区块单向级联成链,以太坊有效的保证了…
/* 格式2: 数据类型[][] 数组名 = new 数据类型[m][]; m:表示这个二维数组有多少个一维数组. 列数没有给出,可以动态的给.这一次是一个变化的列数. */ class Array2Demo2 { public static void main(String[] args) { //定义数组 int[][] arr = new int[3][]; System.out.println(arr); //[[I@175078b //没有指定数组的二维位置是什么,此时没有地址 Sys…
已经看完第一章的内容了吗,欢迎回来. 上一章我们介绍了关于怎么去编写自己的区块链,完成哈希和新块的校验.但是它只是在一个终端(结点)上跑.我们怎么样来连接其他结点以及贡献新的块呢,怎么样广播到其他结点告诉他们要更新区块了呢? 本章就是要告诉你这些. // 区块链的核心部分// 维护一个在启动时可以连接的对等节点列表.当一个完整的节点第一次启动时,它必须被自举(bootstrapped)到网络.// 自举过程完成后,节点向其对等节点发送一个包含其自身IP地址的addr消息.其对等的每个节点向它们自…
本文目的是通过java实战开发教程理解区块链是什么.将通过实战入门学习,用Java自学开发一个很基本的区块链,并在此基础上能扩展如web框架应用等.这个基本的java区块链也实现简单的工作量证明系统.本文用一个java例子,演示了开发一个区块链应用的过程,涉及到所有区块链的概念和基本实现方法.本文阅读对象,主要是希望和即将从事区块链开发的项目架构师.需要指出的是,我们用150行java代码构建的区块链达不到生产级别的,它只是为了帮助你更好的理解区块链的概念. Java源代码保存在Github 创…
概述 对初学者,首先要了解以太坊开发相关的基本概念.   学习以太坊开发的一般前序知识要求,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ruby,Java... 前端开发语言:HTML/CSS/JavaScript Linxu命令行的使用 数据库的基本概念 项目简介 我们构建一个去中心化的(Decentralized)投票应用.利用这个投票应用, 用户可以在不可信(trustless)的分布环境中对特定候选人投票,每次投票都会被记录在区块 链上:   所谓去中…
概述 对初学者,首先要了解以太坊开发相关的基本概念.   学习以太坊开发的一般前序知识要求,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ruby,Java... 前端开发语言:HTML/CSS/JavaScript Linxu命令行的使用 数据库的基本概念 项目简介 我们构建一个去中心化的(Decentralized)投票应用.利用这个投票应用, 用户可以在不可信(trustless)的分布环境中对特定候选人投票,每次投票都会被记录在区块 链上:   所谓去中…
简介 FISCO BCOS是由国内企业主导研发.对外开源.安全可控的企业级金融联盟链底层平台,由金链盟开源工作组协作打造,并于2017年正式对外开源. 目前,成熟的区块链的平台不少,之所以选择FISCO BCOS,主要是因为文档细致,容易入门. 官方地址入口 流程说明: 本篇文章介绍的 Spring Boot 整合 Fisco Bcos的案例,是在阿里云服务器上部署验证的: --> 1.Fisco Bcos环境搭建与验证 --> 2.创建SpringBoot工程并配置依赖 --> 3.编…
以太坊是区块链开发领域最好的编程平台,而truffle是以太坊(Ethereum)最受欢迎的一个开发框架,这是我们第一篇区块链技术文章介绍truffle的原因,实战是最重要的事情,这篇文章不讲原理,只搭建环境,运行第一个区块链程序(Dapp). 安装truffle $ npm install -g truffle 依赖环境 NodeJS 访问https://nodejs.org 官方网站下载安装 系统:Windows, Linux or Mac OS X,推荐Mac OS X,不建议使用Wind…
几乎每个人都听说过像比特币和以太币这样的加密货币,但是只有极少数人懂得隐藏在它们背后的技术.在这篇博客中,我将会用JavaScript来创建一个简单的区块链来演示它们的内部究竟是如何工作的.我将会称之为SavjeeCoin! 全文分为三个部分: part1:实现一个基本的区块链 part2:实现POW part3:交易与挖矿奖励 Part1:实现一个基本的区块链 区块链 区块链是由一个个任何人都可以访问的区块构成的公共数据库.这好像没什么特别的,不过它们有一个有趣的属性:它们是不可变的.一旦一个…
近期,随着区块链技术在社区中的声音越来越大,业界已经开始从技术角度对区块链进行全方位的解读.作为第一批区块链技术的实现,传统比特币与以太坊在共识机制.存储机制.智能合约机制.跨链通讯机制等领域并没有非常严密的设计,从而引发了一些在数据库与存储领域比较常见的问题,导致其数据规模无法无限增加(当前仅几百GB就产生了严重的性能瓶颈,几乎不可能到达上百TB规模),吞吐量极为有限,使其不可能适应通用分布式数据存储或通用结算体系的要求. 作为数据库内核行业十几年的老兵,笔者将会从共识.存储.智能合约.多链.…
0x00 介绍 区块链(Blockchain)是21世纪最具革命性的技术之一,目前它仍处于逐渐成熟阶段,且其发展潜力尚未被完全意识到.从本质上讲,区块链只是一种记录的分布式数据库.但它之所以独特,是因为它并不是一个私有的数据库,而是一个公共数据库,也就是说,每个使用它的人都有一份完整或部分的数据副本.并且,只有在数据库的其他持有者同意的情况下,才可以向区块链中添加新的记录.此外,正是区块链使得加密货币和智能合约成为可能. 在本系列文章中,我们将基于区块链构建一种简单的加密货币. 0x01 区块…
全国第一单区块链理赔.发票开出:1分钟报销     区块链技术和概念随着比特币等虚拟电子货币的兴起而尽人皆知,但是区块链的用途可不仅仅只玩币,尤其是在“矿难”到来之后,区块链正在向更多应用领域渗透.最近,全国第一单区块链理赔.第一张“一条龙”区块链电子发票就分别在浙江台州.广东广州诞生,背后都是基于蚂蚁金服的蚂蚁区块链技术. 这两个新场景的共同亮点在于,它们运用区块链技术,实现了整个流程的闭环,保险对象从申请到收到理赔款只需要5秒钟,而从开发票到报销到账也只需要1分钟——而在此前,这些流程动辄就…
几乎每个人都听说过像比特币和以太币这样的加密货币,但是只有极少数人懂得隐藏在它们背后的技术.在这篇博客中,我将会用JavaScript来创建一个简单的区块链来演示它们的内部究竟是如何工作的.我将会称之为SavjeeCoin!全文分为三个部分: 实现一个基本的区块链 实现 POW 交易与挖矿奖励 实现一个基本的区块链 区块链 区块链是由一个个任何人都可以访问的区块构成的公共数据库.这好像没什么特别的,不过它们有一个有趣的属性:它们是不可变的. 一旦一个区块被添加到区块链中,除非让剩余的其余区块失效…
本文主要借demo介绍基于Tendermint的区块链应用开发,这个demo很简单,主要包含以下功能: 扔漂流瓶 捞漂流瓶 之后投放者和打捞者可以相互传递[加密]信息 代码已上传至github. Tendermint Tendermint帮我们实现了PBFT,相当于搭了一个共识框架,包含两部分: Tendermint-core:PBFT共识算法实现: Tendermint-abci:定义了应用须实现的接口和调用规则,还实现了与外部通信的socket-server.官方的这部分源码可以看做是Go-…
使用Geth 构建以太坊区块链并模拟挖矿过程 Go-ethereum 是以太坊官方的一个Golang 实现,我们可以使用Geth 工具来创建创世区块并启动区块链,使用Clef 实现以太坊钱包的功能,以及使用evm.puppeth 用来以太坊开发.本次我们使用Geth,在两台Host 上,创建一条以太坊区块链和两个账户,并进行区块链的一些基本操作. 我的网络环境中,Host1 的IP 地址为192.168.0.100,Host2 的IP 地址为192.168.0.180 本文绝大多数参考资料来源于…
编写第一个 Java 链代码程序 在上一节中,您已经熟悉了如何构建.运行.部署和调用链代码,但尚未编写任何 Java 代码. 在本节中,将会使用 Eclipse IDE.一个用于 Eclipse 的 Gradle 插件,以及一个名为 ChaincodeTutorial 的 Java 链代码框架项目,编写第一个 Java 链代码程序.您将从我为此教程创建的 GitHub 存储库中获取框架代码,将该代码导入 Eclipse 中,添加代码来让链代码智慧合同按要求生效,然后在 Eclipse IDE 内…
面向 Java 开发人员的链代码简介 您或许听说过区块链,但可能不确定它对 Java™ 开发人员有何用.本教程将帮助大家解惑.我将分步展示如何使用 Hyperledger Fabric v0.6 来构建.运行和执行使用 Java 语言编写的智能合约或链代码.您将安装一些工具,定义本地区块链网络,构建并运行一个链代码智能合约. 有关区块链的概述,请参阅 developerWorks 博客中的 "区块链是什么?分布式账本技术入门". 前提条件 本教程假设您满足以下前提条件: 听说过区块链或…
在本系列前两篇文章中,我们向大家展示了如何通过精炼的Java代码实现一个简单的区块链.包括生成块,验证块数据,广播通信等等,这一篇让我们聚焦在如何实现 PoW算法. 大家都无不惊呼比特币.以太坊及其他加密电子货币的持续狂热,特别是对于刚接触这个领域的新手,不断得听到张三李四通过 GPU “挖矿”而聚集价值数万乃至数百万加密电子货币.那么“挖矿”到底是什么? 它是如何工作的? 相信对于程序员来说,没有什么比自己动手实践一遍“挖矿”算法更好的学习办法了. 在这篇文章中,让我们一起逐个解读每一个问题,…
区块链是目前最热门的话题,广大读者都听说过比特币,或许还有智能合约,相信大家都非常想了解这一切是如何工作的.这篇文章就是帮助你使用 Java 语言来实现一个简单的区块链,用不到 120 行代码来揭示区块链的原理! “用不到120行 Java 代码就能实现一个自己的区块链!” 听起来不可思议吧?有什么能比开发一个自己的区块链更好的学习实践方法呢?那我们就一起来实践下! 因为我们是一家从事互联网金融的科技公司,所以我们采用虚拟资产金额作为这篇文章中的示例数据.大家可以先为自己想一个数字,后面我们会用…
部署并运行 Java 链代码示例 您已经定义并启动了本地区块链网络,而且已构建 Java shim 客户端 JAR 并安装到本地 Maven 存储库中,现在已准备好在之前下载的 Hyperledger Fabric 附带的一个 Java 链代码示例上构建.注册和调用交易. 部署并运行链代码 您将执行以下步骤: 使用 Gradle 构建示例. 通过运行 Gradle 构建软件为您创建的脚本,向验证对等网络注册该示例. 使用 SoapUI 将示例部署到本地区块链网络. 使用 SoapUI 在示例链代…
转自:https://mp.weixin.qq.com/s/2daFH9Ej5fVlWmpsN5HZzw 外文链接: https://medium.com/coinmonks/code-a-simple-p2p-blockchain-in-go-46662601f417 在之前的文章中,我们已经知道了怎么编写PoW也知道了IPFS怎么工作, 但是有一个致命的缺点,我们的服务都是中心化的,这篇文章会教你怎么实现一个简单的完全去中心化的P2P网络. 背景知识 什么是P2P网络 在真正的P2P架构中,…