![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
区块链之变化
文章平均质量分 70
区块链 智能合约
通学技术
关注微信公众号【通学技术】,学通技术。分享编程内功心法、优秀源码分析、中间件原理、算法之奥秘、架构之美学、区块链之变化。
展开
-
从传统机械到互联网到web3.0,我到底经历了什么
从传统机械到互联网到web3.0 我到底经历了什么?hello,铁子们,好久没有发声了,你们都快把我忘了吧。通学技术,学通技术,相约元宇宙。今天随便聊聊,你有空的话,也可以随便看看。我的目标貌似一直在变化,毕竟这个世界只有一小部分人能到达宇宙的尽头,要么体制内,要么“黄袍”加身(注意:这里是调侃的预期,防止有些杠精和我杠。)而我们的大多数人终将是fomo一生。这不,我就是那个一直在fomo的人。web0.0你说你一个二本毕业,成绩一般,想法还多得不行,干个机械项目也挺成功的,你担心啥?这是我在问原创 2022-04-16 22:34:43 · 6377 阅读 · 3 评论 -
通学区块链系列-从go开始容器篇(三)
通学技术,面向区块链编程9、容器之数组package mainimport "fmt"/**容器 --可分为 数组 切片 map*/// 数组func main() { // 整型 未初始化赋值0 var a1 [5]int = [5]int{1, 2, 3, 4} fmt.Println(a1) // 赋值 a1[4] = 6 fmt.Println(a1) // 字符串类型赋值空 s1 := [4]string{"1", "2", "3"} fmt.Pri.原创 2021-06-27 22:11:14 · 240 阅读 · 0 评论 -
通学区块链系列-从go开始之函数篇(二)
通学技术,面向区块链编程6、函数package mainimport "fmt"//函数 举例 数字互换func main(){ a,b := 1,2 swap1(a,b) fmt.Println(a,b) swap2(&a,&b) fmt.Println(a,b) swap3(a,b) fmt.Println(a,b)}// swap内部对参数进行的修改 并不会影响到swap调用时传入的a和b本身。func swap1(a,b int) {.原创 2021-06-27 22:04:39 · 472 阅读 · 0 评论 -
通学区块链系列-从go开始之数据类型与定义(一)
通学技术,学通技术,面向区块链编程,构建可信社会。1、自增长常量package main// 自增长常量import "fmt"const ( // iota = 0 login = iota logout user = iota + 1 account = iota + 3)func main(){ fmt.Println(login) fmt.Println(logout) fmt.Println(user) fmt.Println(account)}2、.原创 2021-06-27 21:59:50 · 460 阅读 · 0 评论 -
通学智能合约系列(二十二)--乞丐版众筹项目实践
智能合约众筹项目实战首先要给大家说声抱歉,最近太太太忙了。之前老早说的要进行一个智能合约总结,一直没有都没有时间,今天终于能抽出来点时间,做一个收尾工作。无论做任何事,我都喜欢善始善终。要做就要做彻底。在这里,我们就跟着建勋老师的步伐,一起来实现我们这个乞丐版的灾情众筹项目吧。当下正值台风“烟花”的侵袭,郑州的父老乡亲们身处水深泥流之中,我们大家也都是忧心忡忡,想给我们的同胞尽一份心,尽一份力。生活在我们当下这个时空,各种天灾频发,各种人祸也是经常让大家吃瓜吃的津津有味,例如,某某H十字又中饱私囊了多原创 2021-07-21 23:54:57 · 4397 阅读 · 5 评论 -
通学智能合约系列(二十一)--结构体<下>
大家好,通学技术,学通技术,让我们一起继续来看看智能合约结构体memory和storage类型转换吧~6、结构体storage转storage详解hello,大家好,我们紧接着上节内容来看看,结构体关于storage和memory类型的转换。我们先来看一个例子:pragma solidity ^0.4.16;contract StructTest{ struct Student{ string name; string grade; }原创 2021-07-07 00:34:39 · 2130 阅读 · 0 评论 -
通学智能合约系列(二十)--结构体<上>
hello,大家好,欢迎继续坚持学习智能合约。这们这节来看看solidity结构体.3、结构体定义与初始化在solidity的世界中,同样定义了结构体来表示复杂的对象类型,我们一起看看他是怎么来定义和初始化的吧~pragma solidity ^0.4.16;contract StructTest{ // 定义一个结构体 struct Student{ string name; uint grade; } function原创 2021-06-30 08:02:53 · 1515 阅读 · 1 评论 -
通学智能合约系列(十九)--memory与storage
Solidity-内存、引用与持久化存储1、 内存与区块链——storage与memory原理在前面的学习当中,我们知道了,合约中的一个被public修饰的成员变量,会默认生成一个供外部调用的函数,而这个函数是存储在区块链自身的数据结果里的。对于函数内部的局部变量,仅存在与内存当中。我们看如下例子:pragma solidity ^0.4.16;contract MemoryTest{ function add(uint num) view returns(uint){原创 2021-06-28 22:47:46 · 1854 阅读 · 5 评论 -
通学智能合约系列(十八)--函数的重写与自我销毁
hello,大家好,通学智能合约系列文档已经出栏了,关注微信公众号号【通学技术】,回复{智能合约}即可获取,大家快来领取吧~~~~~~~~~~~~~~~~~~~~~~~~~~~~~··19、继承中函数的重载重写在这节内容中,视频中的老师讲的有点问题,此处应当是重写,而不是重载。相信学过java或者其他面向对象的小伙伴们都清楚,重载和重写的区别吧。我们来看看solidity的例子一吧pragma solidity ^0.4.16;contract Father{ uint m原创 2021-06-18 23:28:32 · 683 阅读 · 0 评论 -
通学智能合约系列(十七)--函数与Getter
大家好,这里是通学技术,承接上节,我们一起继续来学习智能合约系列。16、函数小结前面我们花费了巨多的篇幅来介绍函数,可见函数是多么的重要。不过当然也是,在面向对象的思想里,属性和行为构成了对象,正是因为我们千姿百态的行为,才构建了我们丰富多彩的世界。这里我们针对我们所学的函数做一个小结吧。首先,还是先请出我们的函数通用写法。function functionName(<parameter types>) {private|internal|external|public} [pur原创 2021-06-16 23:17:07 · 418 阅读 · 0 评论 -
通学智能合约系列(十六)--合约的继承
大家好,这里是通学技术,欢迎大家继续跟我一起学习智能合约系列。13、面向对象–合约的继承相信能看到这里的人,想必都是有经验的开发人员了,坚持不懈,耐得住寂寞。solidity作为一种图灵完备的面向对象的编程语言,必然同其他面向对象的语言一样,拥有继承这一特性。我们就主要来看看它是怎么来表示继承的吧!pragma solidity ^0.4.16;contract Father{ uint money = 10000; function noSmoking(原创 2021-06-16 23:08:20 · 1776 阅读 · 0 评论 -
通学智能合约系列(十五)--函数修改器modifier
大家好,真的是我,我又来啦。通学技术,学通技术,欢迎大家继续跟我一起学习智能合约系列。.函数modifire的强大功能(上)在solidity的世界里,为我们提供了一种类似于spring切面的操作。可以在我们函数的任意位置插入一个函数方法,我们称之为函数修改器。下面就让我们来看看他是怎么写的吧~pragma solidity ^0.4.16;contract modifireTest{ address public ower; uint public num原创 2021-06-06 23:55:18 · 1335 阅读 · 11 评论 -
通学智能合约系列(十四)--函数2
大家好,我是up通,通学技术,学通技术,欢迎大家继续跟我一起学习智能合约系列。5.external权限修饰符详解external和internal除 public 和 private 属性之外,Solidity 还使用了另外两个描述函数可见性的修饰词:internal(内部) 和 external(外部)。internal 和 private 类似,不过, 如果某个合约继承自其父合约,这个合约即可以访问父合约中定义的“内部”函数。(有点类似于java 中的protect)external 与pu原创 2021-06-01 22:20:07 · 1197 阅读 · 6 评论 -
通学智能合约系列(十三)--函数1
大家好,我是up通,通学技术,学通技术,欢迎大家继续跟我一起学习智能合约系列。Solidity–实战篇在实战篇当中,我们将重点介绍solidiy函数的特性。solidity学了这么久,我们会发现其实和java这种面向对象的语言还是很类似的,java类对应solidity合约。而合约的属性及函数正对应了我们java的成员变量及成员方法。编程玩的是逻辑,而逻辑的体现则是行为,行为的数字描述则是函数。我们将花费巨量的篇幅来说明solidty的函数,一起加油吧。solidity函数的标准形式我们可以概括如下原创 2021-05-31 08:16:06 · 1065 阅读 · 3 评论 -
通学智能合约系列(十二)--地址交易<下>
大家好,通学技术,学通技术,欢迎大家继续跟我一起学习智能合约系列。5.以太坊中的全局属性上节内容的最后,我们提出了一个问题,msg.value是什么?不多卖关子,在solidity中,我们称之为全局变量,这里与我们java,python等语言中全局变量不同,更像是以太坊系统提供给我们的一种系统变量,以方便我们更好地进行转账交易或查询区块链信息等操作。这里我们重点介绍几个比较重要的以太坊全局变量。pragma solidity ^0.4.16;contract globleTest{ f原创 2021-05-30 15:32:46 · 884 阅读 · 1 评论 -
通学智能合约系列(十一)--地址交易<上>
Solidity–地址交易篇兄弟们,真的是我,我又回来了。经历了懒散与加班的日子,让我们一起继续智能合约的征程吧。废话不多说,直接上干货。1.以太坊地址的本质在以太坊中,有两种类型的账户:一种是外部账户(EOAs,Externally Owned Accounts),另一种是合约账户(Contracts Accounts)。当我们提到账户这个术语的时候,我们通常指的是外部账户(EOA),当提到合约账户的时候我们通常称其为“合约”。而以太坊的地址分为两种,普通地址和合约地址**普通地址:**普通账原创 2021-05-26 22:37:17 · 2665 阅读 · 6 评论 -
通学智能合约系列(十)--二维数组
二维数组在几何的世界里,一维为线,二维为面;而在程序的的世界中,一维为列表,二维为表;[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7TdOG4nN-1613576067441)(C:\Users\49178\AppData\Roaming\Typora\typora-user-images\image-20210215115526108.png)]类似于上图,我们就可以看做是一个表结构,我们可以用行和列来确定其中的元素,那么在solidity中怎么表示呢?pragm原创 2021-02-17 23:38:31 · 881 阅读 · 0 评论 -
通学智能合约(九)--数组
固定数组首先我们来看看固定数组的默认值。pragma solidity ^0.4.16;contract FixArray{ uint[5] arr; function getDefaultArrContent() view returns(uint[5]){ return arr; } }编译执行后,我们可以看到,固定数组初始值都为0.函数对固定数组初始值进行修改:pragma solidity ^0.4.16;contract原创 2021-02-14 22:07:01 · 795 阅读 · 0 评论 -
通学智能合约系列(八)--字节数组转换
固定长度字节数组转化我们之前也学习了那么多的数组了,那么这些数组类型是否可以相互转换呢?答案是肯定的。我们先来看看固定长度字节数组各bytes之间是怎么转换的吧~pragma solidity ^0.4.16;contract DynamicString{ bytes12 name = 0x7a68656e676a69616e78756e; function changeBytes1() view returns(bytes1){ return原创 2021-02-14 21:56:39 · 531 阅读 · 0 评论 -
通学智能合约系列(七)--字符串
字符串我们都知道字符串在其他编程语言中,都是出场率相当高的一个角色,重要程度不言而喻。在solidity中也不例外。在上节我们学习了动态字节数组,而我们的字符串,可不可以按照动态字节的数组去获取他的长度和其中的元素呢?我们写一个例子来看看吧。pragma solidity ^0.4.16;contract DynamicString{ string name = "tongxuejava"; function getLength() returns(uint){原创 2021-02-14 21:37:10 · 1459 阅读 · 4 评论 -
通学智能合约系列(六)--字节数组
5.数组固定长度字节数组关键字有:bytes1,bytes2mbytes3,…,bytes32(以步长1递增)。byte代表bytes1。pragma solidity ^0.4.16;contract ByteArray{ bytes1 public num1 = 0x7a; bytes2 public num2 = 0x7a68; bytes12 public num3 = 0x7a68656e676a69616e78756e;}固原创 2021-02-05 22:32:39 · 367 阅读 · 0 评论 -
通学智能合约系列(五)--整型溢出
3.整型溢出及异常处理在上节中,如果你认真去码了一遍运算案例,可能小伙伴已经感觉到了隐隐的不安,因为这种算术操作,一旦超出所占位数后,就会变的不可控。所以我们要了错于心,防患于未然。要掌控的溢出下面我们来看一个例子:pragma solidity ^0.4.16;contract Math{ function flow() view public returns(uint8){ uint8 mm = 255; mm++; ret原创 2021-02-05 22:21:45 · 390 阅读 · 2 评论 -
通学智能合约系列(四)--整型运算
2.整型与算术运算在solidity中,基本的整型有int(有符号整型,有正有负)和uint(无符号整型,无负数)。并且他们以8位为区间,int支持int8,int16,int24至int256,uint同理。int默认为int256,uint默认为uint256.思考一下,为什么solidity要搞这么多整型类型,还分的这么细致呢?而他们支持的算术操作有以下等:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yQbc1Hgk-1612448413885)(C:\Use原创 2021-02-04 22:21:44 · 632 阅读 · 0 评论 -
通学智能合约系列(三)--语法概览
Solidity语法这里我先上一张图,以森见木,方能了然于心。从上图可以看出,我们主要从两方面来说明Solidity的语法即数据类型与运算,比较复杂的部分就是我们的数组部分。至于这部分,我们暂且按下不表,待我娓娓道来。1.真假与或非废话不多说,我们直接上代码:pragma solidity ^0.4.16;contract BoolTest{ bool a; function getBoolDefault() returns(bool){原创 2021-02-04 22:19:16 · 496 阅读 · 2 评论 -
通学智能合约系列(二)--你的第一个智能合约
HelloWorld带你进入Solidity的世界在线Remix编辑器: http://remix.hubwiz.com/我们学习任何一门编程语言的时候,都是从helloWorld开始的,当然,Solidity也不例外。正所谓工欲善其事,必先利其器。要学习这门语言,我们需要先找一个容易上手的环境。这里Remix便已经为我们准备好了。打开在线编辑器后,我们会看到如上图三大块,接下来就可以编写我们的第一个智能合约HelloWord.sol了。helloWorld我们编辑如下程序://声明版本原创 2021-02-01 22:25:20 · 595 阅读 · 0 评论 -
通学智能合约系列(一)--智能合约简介
通学智能合约大家好,本文档来自B站无私奉献up主伟大的沉欢分享的《基于以太坊的只能合约开发教程【Solidity】》。整理人【通】,个人公众号【通学java】。部分内容为网络资源(主要引用来自中文维基百科),如有不对的地方,希望能够及时指正,鄙人会统一修改。正文开始:以太坊以太坊(英语:Ethereum)是一个开源的有智能合约功能的公共区块链平台。通过其专用加密货币以太币(Ether,又称“以太币”)提供去中心化的虚拟机(称为“以太虚拟机”Ethereum Virtual Machine)来处理原创 2021-01-31 22:53:15 · 2091 阅读 · 0 评论 -
Fabric开发(五) Ubuntu20.04.1快速搭建Fabric2.2.0 (排雷版)
写在前面看到题目,你可能会想,这个作者脑子抽吧,怎么又要出一篇关于环境搭建的。 emm,毕竟我是那种送佛送到西的人。(哈哈 其实是被小伙伴说了,现在都2.0时代了,怎么还搞1.0的东西,变化挺大的呢) 说来也对,截止当下北京时间2020年9月25号,Fabric github 已经更新到2.2版本,为了保证技术的新鲜热乎的赶脚,我决定就采用2.2版本了。e_e,感觉是给自己又开了个坑,本来想写2.0版本的,稳定版本他不香么。嗯,他不香。FabricV2.2版本现在奉上。(1.4.3版本请点击这里)1、原创 2020-09-28 19:51:35 · 4803 阅读 · 8 评论 -
Fabric开发(四) 基于Fabirc1.4.3编写你的第一个应用
写在前面(到到底什么是Fabric?)在第一节的最后,我们粗略地说了说到底什么是Fabirc。在这里,我得问我们一遍。到底什么是Fabirc?我这个人比较喜欢望文生义,见文知意,顾名思义。。。找Gu爸问问,给如下结果:具体是什么意思,我们暂且按下不表。来看看,我们的另外一个角儿,Hyperledger(超级账本)。对,我们这里讲Fabric确切的说只是Hyperledger下的一个项目而已。中文官网描述如下:到这里,我们应该对Hyperledger Fabirc(以下简称Fabric)有了进一步原创 2020-09-25 15:52:17 · 2319 阅读 · 2 评论 -
Fabric开发(三) Ubuntu20.04.1快速搭建Fabric1.4.3 (排雷版)
上篇我们已经成功启动了Fabric1.0.0网络并测试成功,但是1.0.0确实有点久远了,还是跟着那个大佬的脚本来启动一把1.4.3试试。操作如下:1、先切换分支到1.4.3 执行下载Fabric镜像脚本因为上篇文章我们删除了已经下载的脚本,所以在切换到1.4.3分支之后,需要重新下载镜像,这里也提供了一键下载的命令。切换到scripts目录 并执行脚本bootstrap.shcd ~/go/src/github.com/hyperledger/fabric/scripts./bootstrap原创 2020-09-24 19:30:26 · 2208 阅读 · 3 评论 -
Fabric开发(一) 初见Fabric
Fabric 介绍Hyperledger Fabric 是一个模块化架构的分布式账本平台,提供高度的机密性,弹性,灵活性和可扩展性。它旨在支持不同组件的可插拔实现,并且可以容纳生态系统中存在的高度复杂应用。与别的区块链解决方案不同的是,Hyperledger Fabric 提供了独一无二的可伸缩架构。它也是为了满足未来需要审核的企业级区块链需求,从而在此基础上建立的开源架构。Hyperledger Fabric 将是你的起点。我们建议首次使用的用户先阅读下面的介绍,以便熟悉区块链的工作方式以及 Hyp转载 2020-09-24 15:40:07 · 1093 阅读 · 1 评论 -
Fabric开发(二) Ubuntu20.04.1快速搭建Fabric1.0.0 (排雷版)
一、安装Fabric前准备:1、安装ubuntu,建议virbox+ubuntu镜像。我所使用的版本:1、virtualBox 5.2.202、ubuntu-20.04.1-desktop-amd64.iso安装注意点:1、内存: 2048M2、CPU: 23、磁盘: 位置放在D盘,大小50G。 fabric 安装完需要10G4、网络模式: 桥接2、xshell6 连接 可以网站直接申请学校版本采用xshell 进行操作,方便复制sudo apt-get install原创 2020-09-24 14:30:36 · 3180 阅读 · 14 评论 -
学习区块链的第一堂课--认识区块链
起废话是有点多了哈,一定要看到最后,因为干货在最后~本想着把文章的名字起做 《区块链学习心得第一天》,但今天已经是我接触区块链的第十一天了,感觉自己学了很多,又感觉自己什么都没有学到,脑袋里的知识并没有形成一种核心的结构,不能随时地取用,那就写点东西,记录梳理一下吧。区块链发展至今,已经过了十一载,网上的学习资料太多太多,从入门到精通的系列文章也已经比较多了。不过我并不打算按照那个顺序,这里主要对自己这十一天的学习做一个总结全局性回顾,说说自己的学习思路,或许对后来的你会有所启发和帮助。不过写作过原创 2020-09-18 10:29:37 · 956 阅读 · 1 评论 -
区块链基础入门
区块链区块链本质生产关系的变革。生产力是从人类开始学会发明和使用工具开始以来,就在不断的提升。1784年,瓦特改良的蒸汽机、电力、铁路、飞机、计算机、互联网、大数据、云计算、物联网、人工智能,这些都是生产力革命,核心是“效率提升”。而生产关系的本质是,人类自从有了虚构故事的能力和想象能力以来,人类通过一个个虚构的故事来展开分工和协作的组织形态,部落、国家、公司这些都是生产关系的呈现。而区块链的出现,说到底就是为了解决生产关系严重落后生产力的问题。区块链诞生区块链起源于比特币,2008年11原创 2020-09-18 10:21:04 · 1344 阅读 · 0 评论