自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 第十三章:ZombieFactory

// SPDX-License-Identifier: GPL-3.0//标明Solidity编译器的版本为0.8.11pragma solidity ^0.8.11;//定义一个叫ZombieFactory的合约contract ZombieFactory { //定义NewZombie事件,参数为:zombieId(uint),name(string),和dna(uint)。 event NewZombie(uint zombieId, string name, uint d

2022-02-08 00:06:32 444

原创 第十二章:Web3.js

我们的 Solidity 合约完工了! 现在我们要写一段 JavaScript 前端代码来调用这个合约。以太坊有一个 JavaScript 库,名为Web3.js。在后面的课程里,我们会进一步地教你如何安装一个合约,如何设置Web3.js。 但是现在我们通过一段代码来了解 Web3.js 是如何和我们发布的合约交互的吧。如果下面的代码你不能全都理解,不用担心。// 下面是调用合约的方式:var abi = /* abi是由编译器生成的 */var ZombieFactoryContract =

2022-02-07 22:16:52 676

原创 第十一章:事件 Events

我们的合同快完成了!现在让我们添加一个事件。事件 是合约和区块链通讯的一种机制。你的前端应用“监听”某些事件,并做出反应。例子://声明一个事件event IntegersAdded(uint x, uint y, uint result);function add(uint _x, uint _y) public returns (uint) { uint result = _x + _y; // 触发一个事件,让应用知道该函数被调用 emit IntegersAdded(_x,

2022-02-07 21:44:59 4600

原创 第十章:Keccak256 和 类型转换 Keccak256 and Typecasting

如何让 _generateRandomDna函数返回一个(伪)随机的uint?Ethereum内部有一个散列函数keccak256,它用了SHA3版本。一个散列函数基本上就是把一个字符串转换为一个256位的16进制数字。字符串的一个微小变化会引起散列数据极大变化。这在 Ethereum 中有很多应用,但是现在我们只是用它造一个(伪)随机数。例子://6e91ec6b618bb462a4a6ee5aa2cb0e9cf30f7a052bb467b0ba58b8748c00d2e5keccak256("

2022-02-07 17:10:38 5719

原创 第九章:函数的更多属性 More on Functions

本章中我们将学习函数的返回值和修饰符。返回值要想函数返回一个数值,按如下定义:string greeting = "What's up dog";function sayHello() public returns (string) { return greeting;}Solidity 里,函数的定义里可包含返回值的数据类型(如本例中 string)。函数的修饰符上面的函数实际上没有改变 Solidity 里的状态,它没有改变任何值或者写任何东西。这种情况下我们可以把函数定义为

2022-02-07 16:51:05 3518

原创 第八章:私有 / 公共函数 Private / Public Functions

​Solidity 定义的函数的属性默认为公共。 这就意味着任何一方 (或其它合约) 都可以调用你合约里的函数。显然,不是什么时候都需要这样,而且这样的合约易于受到攻击。 所以将自己的函数定义为私有是一个好的编程习惯,只有当你需要外部世界调用它时才将它设置为公共。如何定义一个私有的函数呢?uint[] numbers;function _addToArray(uint _number) private { numbers.push(_number);}这意味着只有我们合约中的其它函数才

2022-02-07 16:28:43 7228

原创 第七章:使用结构体和数组 Working With Structs and Arrays

创建新的结构体还记得上个例子中的 Person 结构吗?struct Person { uint age; string name;}Person[] public people;现在我们学习创建新的 Person 结构,然后把它加入到名为 people 的数组中.// 创建一个新的Person:Person satoshi = Person(172, "Satoshi");// 将新创建的satoshi添加进people数组:people.push(satoshi);你也

2022-02-07 16:21:27 298

原创 第六章:函数 Function

solidity 中的函数声明如下所示:function eatHamburgers(string _name, uint _amount) public {}这是一个名为的函数eatHamburgers,它接受 2 个参数: 一个string类型和一个uint了类型的。现在函数的主体是空的。注意:惯例(但不是必需的)以下划线开头的函数参数变量名是为了将它们与全局变量区分开来。我们将在整个教程中使用该约定。你可以这样调用这个函数:eatHamburgers("vitalik", 100)

2022-02-07 15:34:28 655

原创 第五章:数组 Arrays

如果你想建立一个集合,可以用 数组 这样的数据类型. Solidity 支持两种数组: 静态数组和动态数组:// 固定长度为2的静态数组:uint[2] fixedArray;// 固定长度为5的string类型的静态数组:string[5] stringArray;// 动态数组,长度不固定,可以动态添加元素:uint[] dynamicArray;你也可以建立一个 结构体类型的数组 例如,上一章提到的 Person:Person[] people; // 这是动态数组,我们可以不断添加

2022-02-07 14:28:11 4362 2

原创 第四章:结构体 Structs

有时你需要更复杂的数据类型,或者函数的参数个数遇到上限的时候,Solidity 提供了 结构体:struct Person { uint age; string name;}结构体允许你生成一个更复杂的数据类型,它有多个属性。注:我们刚刚引进了一个新类型,string。 字符串用于保存任意长度的 UTF-8 编码数据。 如: string greeting = “Hello world!”。...

2022-02-07 14:07:23 197

原创 第三章:数学运算 Math Operations

因为solidity还不支持浮点运算。这里的除法可能会比想象中的复杂。后面的章节再详细说明。这一章占位。

2022-01-30 23:17:12 470

原创 第二章:状态变量和整数 State Variables & Integers

状态变量是被永久的保存在合约里,也就是说他们被写进了 以太坊 的 区块链 中,简单的理解就像是写入了一个数据库。举个例子:contract Example { // 这个无符号整数将会永久的被保存在区块链中 uint myUnsignedInteger = 100;}在上面这个合约中,定义 myUnsignedInteger 为 uint 类型,并赋值100。标题无符号整形:Unsigned Integers (uint)uint 数据类型是无符号整数,这意味着它的值必须为非负数。 还

2022-01-30 22:22:29 2232

原创 第一章:合约 Contracts

Solidity 的代码都包裹在合约里面,合约就是 以太坊 应用的基本模块, 所有的变量和函数都属于合约,它是你所有项目的起点。以下是一份名为 HelloWorld 的合约contract HelloWorld {}##版本指令 Version Pragma所有的 Solidity 源码都必须以 “pragma solidity” 开头,用来标明Solidity编译器的版本,以避免你的代码和其他版本的编译器发生冲突。例如:pragma solidity ^0.8.11;(使用0.8.11版

2022-01-30 22:17:22 2083

原创 Solidity教程

Solidity教程

2022-01-30 22:12:03 4542

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除