![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
区块链——智能合约
西木风落
多年开发经验,专业、高效,致力于更好的自己
展开
-
solidity 以太坊智能合约语言(一)
关于以太坊以及智能合约的一些基本概念,LZ在这里不做介绍。此系列blog的主要目的是智能合约编写语言solidity的学习。1、Solidity语言Solidity是一种接近JavaScript语法的程序语言,也是这一种面向对象的语言,作为一种真正运行在网络上的去中心合约语言,有一些特点:以太坊底层是基于帐户,而非UTXO的,所以有一个特殊的Address的类型。用于定位用户,定位合约...原创 2018-09-05 16:16:34 · 1885 阅读 · 1 评论 -
solidity 以太坊智能合约语言(三)
ABI(Contract Application Binary Interface)详解ABI是以太坊合约间相互调用的一种消息格式,包括从链外部调用链,或者合约之间的相互调用,类似于常见的rpc协议一样,也就是定义操作函数签名,参数编码,返回结果编码等。1、函数使用ABI协议的时候,必须要求在编译的时候知道类型,不支持动态类型编译。同时,协议假设编译期间知道另一个合约的接口定义,所以协...原创 2018-09-05 19:00:03 · 388 阅读 · 0 评论 -
solidity 以太坊智能合约语言(二)
Solidity的完整语法:Solidity源文件结构:语法版本 引入外部源文件 注释Solidity智能合约文件结构状态变量 函数 函数修饰器 事件Events 结构体类型Struct 枚举类型Enum值类型:类型 布尔(Booleans) 整型(Integer) 地址(Address) 字节数组(byte arrays) 小数 字符串(String...原创 2018-09-06 10:29:15 · 229 阅读 · 0 评论 -
IPFS——下一个Http取代?
IPFS,(InterPlanetary File System)星际文件系统的缩写,是一种内容可寻址、版本化、点对点超媒体的分布式协议。IPFS是点对点的超媒体协议,可以让网络更快、更安全、更开放。它是一个面向全球的、点对点的分布式版本文件系统,试图将所有具有相同文件系统的计算设备连接在一起。其工作原理: 每个文件及其中的所有块都被赋予一个称为加密散列的唯一指纹。 IPFS通过网...转载 2018-09-15 18:40:35 · 372 阅读 · 0 评论 -
solidity 以太坊智能合约语言(四)
1、UXTO是什么?UXTO是Unspend Transaction Output,字面意思就是不需要花费的交易输出。有几个典型缺点: 价值盲(Value-blindness)。UTXO脚本不能为账户的取款额度提供精细的控制。例如,预言机合约(oracle contract)的一个强大应用是对冲合约,A和B各自向对冲合约中发送价值1000美元的比特币,30天以后,脚本向A发送价值1000...原创 2018-09-06 16:27:36 · 1041 阅读 · 0 评论 -
solidity 以太坊智能合约语言(五)
对数据结构的进一步深入理解1、数据位置变量的存储位置有三种:memory, storage和calldata。calldata比较特殊,一般只有外部函数的参数被强制指定为这种类型。memory存在EVM的内存中,storage将会被存放在链中block。函数参数的默认位置是memory,状态变量是storage。2、数据位置的相互转换2.1 storage转storage时,只...原创 2018-09-06 18:14:23 · 347 阅读 · 0 评论 -
区块链--默克尔树(Merkle Tree)
Merkle Tree默克尔树是一种二叉树,由一个根节点、一组中间节点和一些叶子节点组成。形状如下:D0、D1、D2和D3是叶子节点包含的数据,也就是叶子节点的value。继续往上看,N0、N1、N2和N3就是叶子节点,它是将数据(也就是D0、D1、D2和D3)进行hash运算后得到的hash值;继续往上看,N4和N5是中间节点,它们各是N0和N1经过hash运算得到的哈希值以及N2和...转载 2018-09-07 16:15:25 · 6395 阅读 · 0 评论 -
solidity 以太坊智能合约语言(六)
1、solidity中的变量定义在solidity中,变量声明后都会默认赋值为初始值。对于引用类型,声明后还需要显示分配内存。 对于映射类型,不显示初始化也可以使用,不过里面没有任何值。 枚举如果没有初始化,默认取顺位第一个值; 结构体没有初始化,里面所有变量是初始值。非常关键的一点:变量无论在函数什么位置定义,作用域都是这个函数。2、solidity中的delete操作符...翻译 2018-09-07 17:41:16 · 657 阅读 · 0 评论 -
开发第一个基于以太坊的dapp
在开发第一个dapp之前,需要做一些准备工作。1、了解什么是以太坊、智能合约?2、了解solidity语言,知道如何用solidity写一个只能合约3、对truffle脚手架有一定了解4、对node.js有一定了解 一、安装开发环境 truffle是一个帮助我们快速开发dapp的工具框架,它的安装依赖于node.js。 1、直接在nodejs官网下载nodejs...原创 2018-09-19 17:14:23 · 2822 阅读 · 0 评论