Solidity的event事件(二十一)|入门系列

阅读更多→   2017/5/28 posted in  Solidity入门系列

Solidity的函数修改器的一些最佳实践(二十)|入门系列

在上篇系列文章中,我们介绍了函数修改器相关知识。这篇文章,我们来看一些应用函数修改器的最佳实践1。主要是对于单管理员,多管理员,数据检验,以及防重入漏洞等相关问题,应用函数修改器的实践。

阅读更多→   2017/5/21 posted in  Solidity入门系列

Solidity的函数修改器(十九)|入门系列

函数修改器(Function Modifiers)1可以方便的控制函数的逻辑,比如可以在某个行为执行前检查某个前置条件,函数修改器还支持继承和重写。可以大家会想,一些检查行为提升为一个语言级特性到底是必要的么?由于整个区块链运行环境是透明的,分布式的,且是图灵完备的。为保证其上运行的代码安全,势必存在大量的检查行为,升级为语言特性可以让检查代码复用,看起来也更简洁。

阅读更多→   2017/5/20 posted in  Solidity入门系列

Solidity的getter访问器(十八)|入门系列

对于所有public的状态变量,Solidity语言编译器,提供了自动为状态变量生成对应的getter(访问器)的特性1。语言暂不提供setter,因为不能很好控制访问权限的改值函数,不一定实用。

状态变量所创建的访问器函数,与变量同名。以interal访问时,按状态变量的方式使用,若以external的方式访问时,则要通过访问器函数,下面来看一个的例子:

阅读更多→   2017/5/14 posted in  Solidity入门系列

在以太坊上创建一个智能合约(十七)|入门系列

我们写好一个合约后,一个合约如何部署到以太坊网络,并实现合约函数的调用呢?合约部署到以太坊网络上,也是一个类似交易的过程。首先向全网发送一个合约创建的交易,待矿工打包交易,并获得全网的认可从而生效后,则得到合约的地址;既而向这个地址发送消息调用,实现调用合约的某个函数。

阅读更多→   2017/5/13 posted in  Solidity入门系列

Solidity变量赋值及元组的解构赋值(十六)|入门系列

1. 赋值规则

赋值是将一个变量赋值给另一个变量。赋值时遵循以下规则:

1.1 赋值给状态变量

赋值给状态变量,总是值传递。

  • 从状态状态赋值给状态变量总是创建一个无关的拷贝。
阅读更多→   2017/5/7

Solidity变量的声明及作用域(十五)|入门系列

Solidity中的作用域规则同于Javascript。1

1. 声明及默认值

变量声明后均有一个初值,是对应类型的“零态”,意即对应的类型的字节表示的全0。使用中需要特别小心的是这与其它语言的默认值如nullundefined有所不同,因为有时0也是一种业务值。下面我们来看一些常见类型的声明,以及它们的默认值:

阅读更多→   2017/5/7 posted in  Solidity入门系列

Solidity中的基本类型转换(十四)|入门系列

点击查看原文,获得优化的排版。

1. 隐式转换

如果一个运算符能支持不同类型。编译器会隐式的尝试将一个操作数的类型,转为另一个操作数的类型,赋值同理。

一般来说,值类型间的互相转换只要不丢失信息,语义可通则可转换。下面,我们来看一个整数转换的例子:

阅读更多→   2017/4/29 posted in  Solidity入门系列

Solidity的delete操作符深入详解(十三)|入门系列

阅读更多→   2017/4/26 posted in  Solidity入门系列

Solidity的映射类型深入详解(十二)|入门系列

映射1是一种引用类型,存储键值对,提供根据键查找值,与其它语言中的字典,map等类似,但也有非常大的不同,尤其它在区块链中独特的存储模型。

阅读更多→   2017/4/23 posted in  Solidity入门系列

BTC Relay项目解决跨链问题的中继方案

BTC Relay是一种基于以太坊平台的跨链的支付解决方案。项目地址在:http://btcrelay.org

区块链技术革新了价值的流动方式。去中介的交换上百万美元的资产,只需要一点手续费在比特币出现之前不可想象。

虽然区块链的这个创意吸引了全球的目光,但却一直存在一个问题:在比特币和以太坊中进行互相交易,仍需要第三方的中介。

阅读更多→   2017/4/16 posted in  项目

Merkle Patricia Tree 梅克尔帕特里夏树(MPT)规范

Merkle Patricia Tree1,梅克尔帕特里夏树,提供了一个基于加密学的,自校验防篡改的数据结构,用来存储键值对关系。后文中将简称为MPT。尽管在本规范范围内,我们限定键值的类型只能是字符串(但仍对所有的类型适用,因为只需提供一个简单的序列化和反序化机制,将要存储的类型与字符串进行转换即可)。

阅读更多→   2017/4/15 posted in  Solidity深入浅出系列

Solidity的自定义结构体深入详解(十一)|入门系列

结构体,Solidity中的自定义类型。我们可以使用Solidity的关键字struct来进行自定义。结构体内可以包含字符串,整型等基本数据类型,以及数组,映射,结构体等复杂类型。数组,映射,结构体也支持自定义的结构体。我们来看一个自定义结构体的定义:

阅读更多→   2017/4/8 posted in  Solidity入门系列

Solidity的数组特性深入详解(十)| 入门系列

数组在所有的语言当中都是一种常见类型。在Solidity中,可以支持编译期定长数组和变长数组。一个类型为T,长度为k的数组,可以声明为T[k],而一个变长的数组则声明为T[]

阅读更多→   2017/4/4 posted in  Solidity入门系列

Solidity的数据位置特性深入详解(九)| 入门系列(老是遇到转换问题的来看看)

代码在执行前,一般会编译成指令。指令就是一个个逻辑,逻辑操作的是数据。代码,或者说业务,操作的其实是数据。非区块链中,代码操作的数据,一般会存到数据库中。

在区块链里,区块链本身就是一个数据库。如果你使用区块链标记物产的所有权,归属信息将会被记录到区块链上,所有人都无法篡改,以标明不可争议的拥有权。所以在区块链中编程中,有一个数据位置的属性用来标识变量是否需要持久化到区块链中。

阅读更多→   2017/4/3 posted in  Solidity入门系列

区块链语言Solidity校验椭圆曲线加密数字签名(附实例)

我们知道整个比特币,以太坊的基石就是椭圆曲线加密算法。所有的数据均需要发起者通过私匙签发,其它人通过非对称的公匙验证确实消息的真实性。下面我们就一起来了解一下椭圆曲线加密算法,并使用以太坊提供的工具对要发送的数据进行数字签名,以及使用Solidity区块链编程语言的ecrecover()校验数字签名的合法性。

椭圆曲线DSA(ECDSA)简介

假如Alice要对消息m加上数字签名,而Bob需要验证该签名。

阅读更多→   2017/3/25 posted in  Solidity入门系列

【Solidity入门系列】函数的可见性与访问权限控制

在之前的文章中1我们介绍了Solidity语言函数的一些基本语法。下面来继续介绍作为一个分布式网络语言所特有的internalexternal这两种不同的函数调用方式,以及Solidity提供的对函数调用时的可见性控制语法。

阅读更多→   2017/3/12 posted in  Solidity入门系列

【Solidity入门系列】函数

函数在所有的语言中都是一种常见类型。Solidity中的函数关键字是function,我们先来看一个最简单的例子:

阅读更多→   2017/3/11 posted in  Solidity入门系列

重磅!企业以太坊联盟技术路线图中文版 | 独家

以太坊企业联盟

以太坊企业联盟,EEA1,是Enterprise Ethereum Alliance的缩写。是基于以太坊建立的一个新的区块链联盟。

联盟成员来自摩根大通,微软,芝加哥大学,ING和BNY Mellon的专家,及Nuco和ConsenSys这样的初创公司。整个联盟尽量保持去中心化的运作方式,采用循环的董事会等手段来最小化单个成员的影响。

阅读更多→   2017/3/5 posted in  热点

【文档翻译系列】ABI详解

ABI1是以太坊的一种合约间调用时的一个消息格式。类似Webservice里的SOAP协议一样;也就是定义操作函数签名,参数编码,返回结果编码等。

阅读更多→   2017/2/26 posted in  Solidity深入浅出系列

友情链接: 区块链技术中文社区