分享实录|区块链技术与智能合约入门(开发实例)

Solidity智能合约示例 在区块链技术中,智能合约是其核心组件之一,它们通常使用特定的编程语言编写,如Solidity(针对以太坊)或Chaincode(针对Hyperledger Fabric)。以下是一些智能合约的示例代码,分别用Solidity和Chaincode编写。Solidity是一种高级的静态类型语言,专门为以太坊智能合约设计。 阅读详情

image

1

什么是区块链

1.1白话讲解区块链

现在区块链特别火,可能大家都听说过区块链,听说过比特币,那到底什么是区块链?

前几天和一个朋友撸串,我给他安利区块链和比特币以及一些数字货币的知识,这个朋友也是一个技术人,他问了我一句:你说了半天区块链、数字货币,我是做技术的能听懂,但是别人就不一定了,所以除了这些技术名词以外,你能不能通俗地介绍一下什么是区块链。

当时一下就把我问住了,百度搜索出来的一个官方答案是:区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式 。看完这句话之后,相信大部分人还是不能完全理解。

那么,我用大白话重新解释一下“什么是区块链”。区块链就是人人参与的、不需要中介的、带有奖励机制的一种记账方式。因为人人都有这个账本的备份,每笔账具有连续性,所以不会作假,公开透明。并且不会有一家独大的情况存在,因为需要大家达成共识后才会记这笔帐。

image

举个例子来帮助理解。

比如有一个村子,村民老孙找老李借一百块钱,但老李怕他赖账,于是就找来村长做公证,并记下这笔账。这个就叫中心化。但如果你不找村长,直接拿个喇叭在村里大喊“我老李借给老孙一百块钱!请大家记在账本里”,然后大家过来验证过确实有这么回事,于是记到了账本上,就叫去中心化。

以前村长德高望重,掌握全村的账本,大家都把钱存在他这里,这是过去大家对中心化的信任。现在,大家都担心村长会偷偷挪用大家的钱,怎么办呢?于是大家就给每个人都发了一本账本,任何人之间转账都通过大喇叭发布消息,收到消息后,每个人都在自家的账本上记下这笔交易,这就是去中心化。有了分布式账本,即使老张或老李家的账本丢了也没关系,因为老赵、老马等其他家都有账本。

后来,村民觉得每个人都记太麻烦了,可以每天轮流换人来记,谁来干这个活给谁一定的奖励。这样大家都抢着来记于是大家约定,谁摇骰子先摇到6了,就可以来记,但是记帐的格式有要求,后一笔帐的开头必须带上前一笔帐的一个标识,这样防止作假帐,并且记完帐要向大家公布出来,让大家能公开的查账。

这个村子自从采用了这种新的记账方式以后,每个人都很开心,不用担心假账、赖账的事情发生,记账还能拿到奖励,于是周围的村子也纷纷效仿这种方式。

其实区块链技术没有想象中的那么神秘,它的运行方式和运行原理就像例子中所说的村里的记账方式。我们通过这个例子,可以比较生动地理解区块链本身的运转模式。

2.2 比特币和区块链的关系

说到区块链就必然会提到比特币,从去年开始,比特币一路飙升,连带其它数字加密货币一起火爆起来,使得数字加密货币市场风头一度盖过股票、外汇、黄金等市场。那么比特币又是什么呢?区块链和比特币之间有什么关系呢?其实比特币就是世界上第一个使用区块链技术的应用。

2008年的金融危机几乎席卷了整个世界,2008年年底,一个叫中本聪的人发表了一篇论文《比特币:一种点对点的电子现金系统》,他通过这篇论文阐述了一些观点以及对金融危机后的思考。这篇论文主要提出了一个系统设计:

通过随机散列(hashing)对全部交易加上时间戳(timestamps),将它们合并入一个不断延伸的基于随机散列的工作量证明(proof-of-work)的链条作为交易记录,除非重新完成全部的工作量证明,形成的交易记录将不可更改。最长的链条不仅将作为被观察到的事件序列(sequence)的证明,而且被看做是来自CPU计算能力最大的池(pool)。只要大多数的CPU计算能力都没有打算合作起来对全网进行攻击,那么诚实的节点将会生成最长的、超过攻击者的链条。

(也就是说如果想要攻击,必须掌握超过半数以上也就是51%的节点的算力,就是我们常说的51%攻击,要做到是非常难的,攻击的成本远大于攻击带来的收益。)

这个系统本身需要的基础设施非常少。信息尽最大努力在全网传播即可,节点(nodes)可以随时离开和重新加入网络,并将最长的工作量证明链条作为在该节点离线期间发生的交易的证明。

这个系统有一个非常完善的经营模型来确保系统的正常运转以及不受黑客攻击。

比特币的数据结构

image

从图上来看,一个区块是由区块头和区块体构成的,区块头中有前一个区块头的哈希值和梅克尔根,每个区块头中的梅克尔根关联了区块中众多的交易事务,而每个区块之间又是通过区块头的哈希值也就是它的散列值关联起来的。

可以看出来这是很有意思的数据格式,它将连续不断发生的数据分成了一个个的数据块,在下载同步这些数据的时候可以并行地从各个节点来获得。不管数据先后,到达本地后再根据数据块的标识组装起来就行。另外,这是一种链式的结构,链式结构的最大特点是一环扣一环,很难从中破坏。

简单介绍一下梅克尔树,如上图右下方树形的数据结构。比特币中的梅克尔树称为二叉梅克尔树,它是通过区块中的交易事务哈希值两两结对计算出的新的哈希值。交易事务哈希值两两结对后再进行一段递归循环,直到计算出最后一个根哈希值,这样的一棵树就是梅克尔树。

为什么要用梅克尔树这样的数据结构来存储交易的事务数据呢?因为比特币系统是分布式的网络结构,当一个节点需要同步自己的区块链账本数据时,并没有一个明确的服务器来下载数据,而是通过与其他节点的通信来实现的。在下载区块数据的时候,难免会有某部分数据可能会发生损坏,所以对于一条条的交易事务就可以用梅克尔树这种形式来进行验证。

后来人们通过研究比特币的白皮书和它的源代码,提炼出一系列背后的思想及技术,并将提炼出来的结果称之为区块链。区块链技术不仅仅能实现数字货币,还能基于这个技术实现各种各样的应用。因此比特币是区块链技术的一种实践方式,区块链是比特币的技术基础,这就是比特币和区块链两者之间的关系。

现在的比特币是一个家族,包括BTC 、BCC、BTG等,还出现了类似于比特币的各种加密货币。

为什么现在有比特现金、比特黄金、莱特币这些币?这要从扩容说起:比特币本身的区块容量限定为1M,随着时间的推移,运行速度越来越慢,因为1M的容量是在是太小了,一个区块只能容纳有限的交易事务,网络中等待确认的交易会排很长的队伍,这时就需要进行扩容。

所谓的区块链扩容主要是指增加区块容纳交易事务的能力,通常有两种做法:一是增加许可空间的大小,二是缩小交易数据的尺寸。

第一种做法符合一般思维,相当于我们的衣服越来越多,一个衣柜放不下,就多买了几个衣柜;第二种做法的意思是,比如还是之前的例子,衣服越来越多,我们在不增加衣柜的情况下,把衣服好好地叠一叠压缩打包起来,这样同样的空间就能容纳更多的衣服。第二种做法引申出来一个概念:segregated witness隔离验证。

隔离验证

比特币的交易数据结构是通过发起者签署自己的UTXO(未花费的交易输出),然后填上接收者的地址建立起来的。这个交易的过程就像签署一张支票,这张支票就相当于一条比特币的交易事务,签署UTXO相当于给支票签名,也就是所谓

从后端到智能合约开发:需要多久 根据个人情况设计你的学习规划,每天坚持学习2-4小时,在6个月内掌握从智能合约开发所需的技能,并不是难事。我是田大正,一个7年全栈经验,目前已经全面转型到web3,如果你在关注区块链,web3市场,正在规划自己的转型路径,欢迎跟我私信交流,愿意与你分享我的转型经验。学习资源:React.js或Vue.js、Web3.js或Ethers.js教程。学习资源:Solidity文档、高级课程、GitHub上开源智能合约代码。学习资源:Mocha、Chai、Truffle、Hardhat教程。 阅读详情

相关推荐

一起学:以太坊智能合约开发

课程介绍 无论在科技圈还是金融圈,“区块链”俨然成了最热的词汇。2016年,区块链写入了国家的十三五规划中;2017年,央行基于区块链技术的数字票据交易平台测试成功;同年,工信部发布了首个区块链参考架构标准。
经过2017年如火如荼的投资盛宴,区块链开始逐渐走向应用落地,业内都在积极探索使用场景。如金融领域的资产贸易、支付系统、金融服务,其他领域的电子商务、社交通讯、游戏娱乐等等。同时,BAT、迅...

GitChat 1万+

蚂蚁区块链平台BaaS技术解析与实践

摘要: 以“数字金融新原力(The New Force of Digital Finance)”为主题,蚂蚁金服ATEC城市峰会于2019年1月4日在上海如期举办。在ATEC区块链行业研讨会分论坛上,蚂蚁金服区块链BaaS技术总监李书博做了主题为《BaaS入门到精通:区块链技术如此简单》的精彩分享。 演讲中,李书博首先从技术方面介绍了蚂蚁区块链BaaS平台,随后从实践的角度介绍了客户如何快速地实现...

蚂蚁金服技术团队 5255

区块链应用开发实战

在C#中,可以定义一个简单的区块结构体,包含索引、时间戳、交易数据、前一区块的哈希值以及当前区块的哈希值等属性。set;set;set;set;set;

shejizuopin的博客 1429

【区块链 | DAPP】Dapp应该怎么开发?分享一篇Dapp开发的逻辑(分享) 更新中~

写在前面 本篇文章将带领你从零学会一个Dapp开发,笔者从最初的不了解区块链概念到如今精通Dapp、智能合约开发,中间踩过无数的坑,经历过无数困难! 一、什么是Dapp? 去中心化应用(decentralized application),或简称DApp,通常与区块链平台例如以太坊相联系,是一个在分布式点对点网络上运行的应用程序,而不是在一台中央计算机上。这样做的主要好处是,网络的用户不依赖于中央计算机来发送和接收信息。 为了充分理解去中心化应用程序与中心化应用程序之间的区别,我们可以看一下中心.

1万+

C#与区块链:以太坊智能合约开发与Solidity的奇幻探险

以太坊就像是一个充满魔法的王国,而Solidity就是这个王国的通用语言,让所有的魔法师(开发者)都能施展他们的魔法(编写智能合约)。首先,安装Node.js和npm,然后安装Truffle,这是一个开发以太坊智能合约的框架。

java专栏 1758

C#与区块链:智能合约开发

📚 智能合约是一种运行在区块链上的程序,它可以在满足预设条件时自动执行。使用C#开发智能合约,我们可以利用.NET平台的强大功能,结合区块链的特性,开发出安全、高效的去中心化应用。

java专栏 877

基于区块链的物联网智能合约模型设计.docx

基于区块链的物联网智能合约模型设计.docx

Python语言在工业控制中的简单应用

在工业控制中,经常需要对采集到的数据进行分析和处理,Python的这些库可以简化这一过程。传统的工业控制系统多依赖于专用的控制硬件和软件,但随着技术的发展,开放性和灵活性成为了新的需求焦点。还有,Python社区活跃,提供了大量的开源代码和模块,这对于工业控制领域来说是一个巨大的资产。Python作为一种高级编程语言,因其简洁的语法、强大的库支持和广泛的社区资源而在工业界获得了快速的发展和广泛的应用。在工业控制领域,Python的应用日益增多,这得益于其跨平台性、脚本语言的灵活性以及与硬件设备交互的能力。

2303_78014702的博客 1722

【硬件】通俗易懂的讲解晶体管(三极管和MOS管)的工作原理

晶体管是一个简单的元器件,可用于构建许多有趣的项目。在本文中,我将用通俗易懂的语言给您讲解晶体管的工作原理,以便您可以在电路设计中更好的使用静态管。一旦你学习这些基础知识,对以后的设计和使用来说,将会变得非常容易。我们将重点介绍两种最常见的晶体管:双极型晶体管(三极管)和MOSFET。晶体管的工作原理其实是类似于电子开关。它可以打开和关闭电路。一个简单的思考方法是将晶体管视为无源的继电器。晶体管类似于继电器,从某种意义上说,您可以使用它来打开和关闭某些东西。但晶体管也可以部分导通,一般在放大电路中使用,这部

1万+

MacX DVD Ripper Pro for Mac(DVD解码器) 6.2.120190416免激活版

只需要5分钟即可转档一张DVD光碟!并允许我们在编码之前预览、编辑、裁剪、修剪或扩展视频。第一款也是唯一一款能够支持DVD到MP4,H.264,MOV,FLV,MPEG4等所有格式DVD(新DVD,99-标题DVD,损坏和无法播放的DVD)和翻录DVD / ISO映像的工具,AVI,QT,MP3等。借助350多种预设配置文件MacX DVD Ripper Pro for Mac(DVD解码器) 6...

llhf688的博客 891

复习单片机:动态数码管(1 数码管介绍+2 74HC245 和 74HC138 芯片介绍+3 硬件设计+4 软件设计+5 实验现象)

复习单片机:动态数码管(1 数码管介绍+2 74HC245 和 74HC138 芯片介绍+3 硬件设计+4 软件设计+5 实验现象)

wo12369874的博客 1701

2024年11月架构设计师案例分析真题回顾,附参考答案、解析及所涉知识点(一)

软考高级系统架构设计师考试包含三个科目:信息系统综合知识、案例分析和系统架构设计论文。考试形式为机考。本文主要回顾2024年下半年(2024-11-10)系统架构设计师考试上午第二科案例分析的题目,同时附带参考解答、解析和所涉知识点。

一几文的编程学习笔记。 2419

帝企鹅优化器(EPO)详解:从基础原理到代码实战

帝企鹅优化器(EPO)是受帝企鹅群体在极寒环境中抱团取暖行为启发,于2018年提出的一种群体智能优化算法。其核心机制是模拟帝企鹅种群通过动态调整位置来维持体温的过程,主要包括确定集群边界、计算温度分布、衡量个体间距离以及更新位置四个步骤,从而在求解复杂优化问题时有效平衡全局探索与局部开发。该算法具有参数少、结构清晰、易于实现等优点,在工程优化、图像处理、机器学习特征选择以及冷链物流车辆路径规划等领域展现出良好的应用潜力。

qq_42212808的博客 141

CUDA:实现使用cuSolverSP底层API实现Cholesky因式分解(附完整源码)

CUDA:实现使用cuSolverSP底层API实现Cholesky因式分解(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 346

学 Simulink—— 基于高频方波电压注入的表贴式永磁电机无感控制仿真

本文手把手教授基于Simulink的高频方波电压注入法实现表贴式永磁同步电机(SPMSM)无传感器控制。针对表贴式电机微弱凸极特性(Lq/Ld≈1.05-1.15),详解方波注入相比正弦注入的优势:通过5kHz方波(PWM频率半值)集中能量提升信噪比,并采用相邻周期电流直接相减的零延迟分离技术。系统架构包含高频注入器、无滤波器信号分离模块、锁相环观测器和磁饱和极性辨识等关键环节,提供参数设置经验(如注入幅值10-15%Vdc)和典型性能指标(位置误差<0.2rad)。特别强调工程实现要点:PWM同步时

xiaoheshang_123的博客 168

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: 区块链100讲:通过一次交易旅程来理解Hyperledger Fabric节点
下一篇: 区块链100讲:通过一次交易旅程来理解Hyperledger Fabric节点
HiBlock区块链社区
博客等级 码龄9年 469粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值