Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
207 commits
Select commit Hold shift + click to select a range
5e7ab60
update bob's update
bobjiang May 19, 2018
79e16b3
Merge pull request #6 from HiBlock/master
bobjiang May 19, 2018
b4ff9cb
Update README.md
cdtakumi May 20, 2018
42b647f
区块链布道周输出(5.20)_倔强的小红军
liyunchou May 20, 2018
5bb739f
Merge pull request #7 from cdtakumi/develop
bobjiang May 21, 2018
2a70af8
Add fabric model and binaries tools introduction.
abcfy2 May 20, 2018
deab746
Merge pull request #8 from liyunchou/develop
bobjiang May 21, 2018
8282f5f
Merge branch 'develop' into develop
bobjiang May 21, 2018
7dc3fec
Merge pull request #9 from abcfy2/develop
bobjiang May 21, 2018
bf27084
add a new post from hujian.
foxgem May 21, 2018
a07c199
Merge pull request #10 from foxgem/master
bobjiang May 21, 2018
a04a652
以太坊学习提交
iamlixiaofei May 21, 2018
d82b372
Merge pull request #12 from iamlixiaofei/develop
bobjiang May 21, 2018
d67c68f
add link of training on 2018/5/23
foxgem May 24, 2018
e9052bf
Merge pull request #14 from foxgem/master
bobjiang May 24, 2018
6b2d6e6
Add Hyperledger Fabric network running manually
abcfy2 May 27, 2018
9bfc51e
Merge pull request #16 from abcfy2/develop
bobjiang May 28, 2018
11016c0
how to hold blockathon
bobjiang May 28, 2018
32b1f9b
README.md
bobjiang May 28, 2018
3b3b041
solve conflict
bobjiang May 29, 2018
970329a
update pdf
bobjiang May 29, 2018
8a196a0
Update README.md
dennisWind May 29, 2018
eb078c1
Update README.md
dennisWind May 30, 2018
1b5addf
AmyWu submits homework 20180602
AmyWuGo Jun 2, 2018
352e732
AmyWu submits homework 20180602
AmyWuGo Jun 2, 2018
8a9a036
add another weekly note about fabric.
foxgem Jun 3, 2018
9808807
Add install Hyperledger Composer on Linux.
abcfy2 Jun 3, 2018
ca1a3d8
Merge pull request #19 from foxgem/master
bobjiang Jun 4, 2018
3b0a262
Merge branch 'develop' into develop
bobjiang Jun 4, 2018
2f26d8f
Merge pull request #20 from abcfy2/develop
bobjiang Jun 4, 2018
f48fa8f
ethereum introduction
bobjiang Jun 4, 2018
c1baf2f
add link
bobjiang Jun 4, 2018
ed526c6
Update README.md
cdtakumi Jun 4, 2018
de0637a
提交
iamlixiaofei Jun 4, 2018
6d38e83
Merge pull request #21 from cdtakumi/develop
bobjiang Jun 4, 2018
1649058
Merge pull request #22 from iamlixiaofei/develop
bobjiang Jun 4, 2018
a718b8e
update join us
bobjiang Jun 5, 2018
8ebd95e
update for huige
bobjiang Jun 5, 2018
1884d7b
bob
bobjiang Jun 8, 2018
47256f2
AmyWu submits homework for 20180609
AmyWuGo Jun 9, 2018
4b44212
Merge pull request #23 from AmyWuGo/develop
bobjiang Jun 9, 2018
a346ee7
Add Hyperledger Composer key concepts introduction
abcfy2 Jun 10, 2018
103b6b4
20180609提交
iamlixiaofei Jun 10, 2018
e10d5cd
Merge pull request #24 from abcfy2/develop
bobjiang Jun 11, 2018
ed9cd14
Merge branch 'develop' into develop
bobjiang Jun 11, 2018
c5b16fb
Merge pull request #25 from iamlixiaofei/develop
bobjiang Jun 11, 2018
f3d1741
增加第四周的输出
Jun 11, 2018
893da0f
Merge pull request #26 from duncanwang/patch-4
bobjiang Jun 11, 2018
59609a6
add a post on 2018-6-11.
foxgem Jun 11, 2018
aab36b2
Merge pull request #27 from foxgem/master
bobjiang Jun 12, 2018
9e2e1db
AmyWu submits homework for 20180616
AmyWuGo Jun 17, 2018
7de18e7
Merge pull request #28 from AmyWuGo/develop
bobjiang Jun 17, 2018
aad26df
Add Composer development tutorial
abcfy2 Jun 17, 2018
4b8d2af
Update README.md
Jun 18, 2018
bcad9e6
Merge pull request #29 from abcfy2/develop
bobjiang Jun 18, 2018
95c873b
Merge branch 'develop' into patch-5
bobjiang Jun 18, 2018
4d2461a
Merge pull request #30 from duncanwang/patch-5
bobjiang Jun 18, 2018
a5f2766
add a post on 2018-6-18.
foxgem Jun 18, 2018
4cd6d42
add bob's output
bobjiang Jun 18, 2018
7194052
Merge branch 'develop' into master
bobjiang Jun 19, 2018
a0c4889
Merge pull request #31 from foxgem/master
bobjiang Jun 19, 2018
faf13a8
add hiblock desc
bobjiang Jun 19, 2018
03b69c6
add ethereum learning record
bobjiang Jun 19, 2018
565332d
new agile and blockchain
bobjiang Jun 20, 2018
a708cf2
add link for agile and blockchain file
bobjiang Jun 20, 2018
ba7629e
fix it
bobjiang Jun 20, 2018
cb3738a
AmyWu submits homework for 20180623
AmyWuGo Jun 23, 2018
7ef9753
AmyWu submits homework for 20180623
AmyWuGo Jun 23, 2018
62a7307
add a post on 2018-06-24.
foxgem Jun 24, 2018
58f5b52
Add files via upload
richard9219 Jun 24, 2018
0d134a8
Merge pull request #33 from foxgem/master
bobjiang Jun 24, 2018
7808fad
Merge pull request #34 from renyanduo/develop
bobjiang Jun 24, 2018
ad2e85f
Add Hyperledger study summary.
abcfy2 Jun 24, 2018
c2787d0
0623及0616补充提交
iamlixiaofei Jun 24, 2018
1efe5f5
Merge pull request #35 from abcfy2/develop
bobjiang Jun 25, 2018
a950e6c
Merge pull request #36 from iamlixiaofei/develop
bobjiang Jun 25, 2018
54c6946
修改
duncanwang Jun 26, 2018
0fe93ab
Merge pull request #37 from duncanwang/patch-8
bobjiang Jun 26, 2018
eef35a0
promote learn blockchain
bobjiang Jun 26, 2018
67aef20
update readme
bobjiang Jun 26, 2018
cf8475c
辉哥本周工作更新
duncanwang Jun 29, 2018
85f7691
Merge pull request #38 from duncanwang/patch-9
bobjiang Jun 30, 2018
963f03b
AmyWu submits homework for 20180623
AmyWuGo Jul 1, 2018
f689f15
add a post on 20180701.
foxgem Jul 1, 2018
fa303d5
添加区块链跨链交易简介
abcfy2 Jul 1, 2018
d91f452
add IPFS2
richard9219 Jul 1, 2018
4197fa2
20180630提交
iamlixiaofei Jul 1, 2018
7e8f0af
Merge pull request #43 from iamlixiaofei/develop
bobjiang Jul 2, 2018
2055d58
Merge pull request #42 from renyanduo/develop
bobjiang Jul 2, 2018
8bcc29d
Merge branch 'develop' into develop
bobjiang Jul 2, 2018
41be73d
Merge pull request #41 from abcfy2/develop
bobjiang Jul 2, 2018
fdb8da3
Merge branch 'develop' into master
bobjiang Jul 2, 2018
f4c1e9e
Merge pull request #40 from foxgem/master
bobjiang Jul 2, 2018
e887bc6
Merge branch 'develop' into develop
bobjiang Jul 2, 2018
992778c
Merge pull request #39 from AmyWuGo/develop
bobjiang Jul 2, 2018
e2906c2
AmyWu submits homework for 20180707
AmyWuGo Jul 7, 2018
63068c2
Merge pull request #44 from AmyWuGo/develop
bobjiang Jul 7, 2018
2afc130
Add Jenkins for ethereum CI
abcfy2 Jul 8, 2018
1cdaf4a
Add Jenkins for ethereum CI
abcfy2 Jul 8, 2018
13574bd
add a post on 20180708
foxgem Jul 8, 2018
8b33936
Merge pull request #46 from foxgem/master
bobjiang Jul 8, 2018
18c688e
add storj
richard9219 Jul 9, 2018
9d2226e
Merge pull request #1 from HiBlock/develop
richard9219 Jul 9, 2018
58c3a2c
Merge pull request #47 from renyanduo/develop
bobjiang Jul 9, 2018
5481f99
update
bobjiang Jul 9, 2018
6c6decc
更新学习进展。
billwangwg Jul 9, 2018
2a77e13
Merge pull request #48 from xifarm/develop
bobjiang Jul 9, 2018
f4bad35
本周输出
duncanwang Jul 9, 2018
fee74a8
搭建以太坊私链
fxl31 Jul 9, 2018
b8958ec
搭建以太坊客户端
fxl31 Jul 9, 2018
598ffb7
Merge pull request #49 from duncanwang/patch-10
bobjiang Jul 9, 2018
77d49aa
Merge branch 'develop' into develop
bobjiang Jul 9, 2018
fdd47d3
Merge pull request #50 from fxl31/develop
bobjiang Jul 9, 2018
9abdae2
Merge pull request #1 from HiBlock/develop
iamlixiaofei Jul 10, 2018
ec94117
0707提交
iamlixiaofei Jul 10, 2018
5b022bb
增加本周学习内容。
billwangwg Jul 15, 2018
176c8b5
更新URL
billwangwg Jul 15, 2018
99cc356
Merge branch 'develop' of github.com:HiBlock/blockchain-learning into…
abcfy2 Jul 15, 2018
9b428c7
Add Simple guide to using Ethereum Test Network
abcfy2 Jul 15, 2018
c82baf3
增加本周学习内容。
billwangwg Jul 15, 2018
ffb3c7c
更新URL
billwangwg Jul 15, 2018
60802aa
add a post on 2018-07-16.
foxgem Jul 15, 2018
5258c6f
add a post on 2018-07-16.
foxgem Jul 15, 2018
c9b0051
Merge branch 'master' of https://github.com/HiBlock/blockchain-learni…
fxl31 Jul 16, 2018
29929d2
Merge branch 'develop' of https://github.com/HiBlock/blockchain-learn…
fxl31 Jul 16, 2018
ce8f092
Update README.md
fxl31 Jul 16, 2018
9043363
Merge remote-tracking branch 'upstream/develop' into develop
abcfy2 Jul 16, 2018
9a85793
AmyWu submits homework for 20180714
AmyWuGo Jul 16, 2018
d51d51d
Merge pull request #2 from HiBlock/develop
iamlixiaofei Jul 16, 2018
9538297
0714提交
iamlixiaofei Jul 16, 2018
b00ca82
0707与0714提交
iamlixiaofei Jul 16, 2018
a42f043
Merge pull request #51 from iamlixiaofei/develop
bobjiang Jul 17, 2018
624d876
Merge pull request #53 from abcfy2/develop
bobjiang Jul 17, 2018
5a41a5b
Merge branch 'develop' into develop
bobjiang Jul 17, 2018
4505894
Merge pull request #59 from iamlixiaofei/develop
bobjiang Jul 17, 2018
c26cd11
Merge branch 'develop' into develop
bobjiang Jul 17, 2018
9fa3017
Merge pull request #58 from AmyWuGo/develop
bobjiang Jul 17, 2018
7348ba4
Merge branch 'develop' into develop
bobjiang Jul 17, 2018
83e3f81
Merge pull request #56 from fxl31/develop
bobjiang Jul 17, 2018
ec10682
AmyWu submits homework for 20180721
AmyWuGo Jul 22, 2018
e0b0485
update homewok.
billwangwg Jul 22, 2018
2282004
update url.
billwangwg Jul 22, 2018
8c1a8fd
添加从开发者的角度快速解读以太坊白皮书
abcfy2 Jul 22, 2018
499d7b8
Merge pull request #62 from abcfy2/develop
bobjiang Jul 23, 2018
a1587ec
Merge branch 'develop' into HiBlock-develop
bobjiang Jul 23, 2018
89f9171
Merge pull request #61 from xifarm/HiBlock-develop
bobjiang Jul 23, 2018
15f3fa3
Merge branch 'develop' into develop
bobjiang Jul 23, 2018
613ece1
Merge pull request #60 from AmyWuGo/develop
bobjiang Jul 23, 2018
4533fa8
add BoB
bobjiang Jul 23, 2018
bf24be7
add a post on 2018-07-28.
foxgem Jul 28, 2018
a25a6ce
homework
AmyWuGo Jul 29, 2018
2ec8194
Add Understanding ERC-20 token contracts
abcfy2 Jul 29, 2018
65f51ad
钱包
Jul 30, 2018
340393d
Merge pull request #63 from foxgem/master
bobjiang Jul 30, 2018
934898a
Merge branch 'develop' into develop
bobjiang Jul 30, 2018
89f4b6d
Merge pull request #64 from AmyWuGo/develop
bobjiang Jul 30, 2018
5a4e66d
Merge branch 'develop' into develop
bobjiang Jul 30, 2018
e2767d5
Merge pull request #65 from abcfy2/develop
bobjiang Jul 30, 2018
b707800
Merge pull request #66 from fxl31/develop
bobjiang Jul 30, 2018
36b62d3
update 7.28 workhome.
billwangwg Jul 31, 2018
79ca4f8
add a post on 20180805
foxgem Aug 5, 2018
7818c87
Add ERC-20 token contract's functions and events.
abcfy2 Aug 5, 2018
ea3f139
Merge branch 'develop' of https://github.com/HiBlock/blockchain-learn…
billwangwg Aug 6, 2018
46659f2
update ppt.
billwangwg Aug 6, 2018
e889db0
update 0803 homework.
billwangwg Aug 6, 2018
bfb86ec
Merge pull request #69 from abcfy2/develop
bobjiang Aug 6, 2018
fec6591
Merge branch 'develop' into develop
bobjiang Aug 6, 2018
79c2222
Merge pull request #67 from xifarm/develop
bobjiang Aug 6, 2018
e1f3545
add upgradable contract
bobjiang Aug 6, 2018
f7ff1bc
update README
bobjiang Aug 6, 2018
1c19fee
homework for 20180811
AmyWuGo Aug 12, 2018
2d1a3be
update 8.11 homework.
billwangwg Aug 12, 2018
52c50fb
添加 Hyperledger Cello简介
abcfy2 Aug 12, 2018
ccc1972
Merge pull request #72 from abcfy2/develop
abcfy2 Aug 12, 2018
e831dcf
Merge branch 'develop' into develop
bobjiang Aug 13, 2018
f25099a
Merge pull request #70 from AmyWuGo/develop
bobjiang Aug 13, 2018
04a05b4
Merge branch 'develop' into develop
bobjiang Aug 13, 2018
7ebf9d4
Merge pull request #71 from xifarm/develop
bobjiang Aug 13, 2018
f5e7ea6
homework for 20180818
AmyWuGo Aug 19, 2018
04eedbf
Add Hyperledger Explorer
abcfy2 Aug 19, 2018
7a20c21
Merge pull request #74 from abcfy2/develop
abcfy2 Aug 19, 2018
d198495
Merge branch 'develop' into develop
bobjiang Aug 20, 2018
63232cd
Merge pull request #73 from AmyWuGo/develop
bobjiang Aug 20, 2018
5c343a9
homework for 20180825
AmyWuGo Aug 25, 2018
85aabdf
Merge pull request #76 from AmyWuGo/develop
AmyWuGo Aug 25, 2018
c2fa3b6
homework for 20180901
AmyWuGo Sep 2, 2018
e755b5f
Merge pull request #77 from AmyWuGo/develop
AmyWuGo Sep 2, 2018
2ed6351
homework for 20180908
AmyWuGo Sep 8, 2018
989b4f3
Merge pull request #78 from AmyWuGo/develop
AmyWuGo Sep 8, 2018
ef97a19
truffledapp_metacoin from olivia
oliviazhang111 Sep 16, 2018
215a4fd
Update README.md
oliviazhang111 Sep 16, 2018
cc0b056
Merge pull request #79 from oliviazhang111/develop
AmyWuGo Sep 16, 2018
6bff1fa
homework
AmyWuGo Sep 17, 2018
cbaea20
Merge pull request #80 from AmyWuGo/develop
AmyWuGo Sep 17, 2018
19c3ee2
Add new article
oliviazhang111 Sep 23, 2018
c8f8944
Merge pull request #81 from oliviazhang111/develop
AmyWuGo Sep 23, 2018
3b008ac
homework
Sep 24, 2018
1b2c415
homework
Sep 29, 2018
36bc0e4
homework
Oct 1, 2018
dcd778d
homework
Oct 7, 2018
ed4eece
homework
Oct 14, 2018
242c58c
homework
Oct 14, 2018
01db262
homework
Oct 21, 2018
1bede09
homework
Oct 23, 2018
14b94eb
homework
Nov 4, 2018
038a6c6
homework
Nov 18, 2018
e199107
homework
Nov 25, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added 2018-7-10 以太坊常用术语-王文刚.pdf
Binary file not shown.
Binary file added 20180803 区块链白皮书分享.ppt
Binary file not shown.
160 changes: 160 additions & 0 deletions CryptoZombies游戏学习Solidity笔记.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
作者:倔强的小红军
注释:这是学习https://cryptozombies.io时的笔记
1. 函数的写法
```
function createZombies(string _str, uint _id) public pure returns(result){

}
```
returns后带括号写返回的参数名

2. 修饰符
- public/private限定函数可以被所有人调用/只能在合约内部使用
- internal/external限定函数函数可以被继承合约调用/只能从外部被调用
- pure/view/留空可以限定函数不使用该DAPP的任何数据(不看也不写)/只查看该DAPP的数据保证不修改/可以修改合约数据
- modifier修饰符,用于自定义其对函数的约束逻辑。在函数之前运行,常用来添加require检查是否满足限制条件,如下展示了自定义参数的modifier,其定义形式跟函数一样:
```
// 存储用户年龄的映射
mapping (uint => uint) public age;

// 限定用户年龄的修饰符
modifier olderThan(uint _age, uint _userId) {
require(age[_userId] >= _age);
_;
}

// 必须年满16周岁才允许开车 (至少在美国是这样的).
// 我们可以用如下参数调用`olderThan` 修饰符:
function driveCar(uint _userId) public olderThan(16, _userId) { //modifier后也要记得传递参数
// 其余的程序逻辑
}
```
modifier修饰符的最后一行为`_;`,表示修饰符调用结束后返回,并执行调用函数余下的部分。 一个常用的modifier叫onlyOwner,它能达到禁止第三方修改我们的合约的同时,留个后门给咱们自己去修改的目的。使用方法为先集成ownable合约。注意onlyOwner表明只能合约的作者调用,而合约的调用者不能调用该函数。
- payable 一种可以接收以太的特殊函数。可以用于向一个合约要求支付一定的钱来运行一个函数。

# 第三章 高级Solidity编程
这节介绍在以太坊上的DApp与其它程序真正的区别之处
1. 在你把智能协议传上以太坊之后,它就变得不可更改, 这种永固性意味着你的代码永远不能被调整或更新。
因此需要给可能需要修改的参数预留修改接口。

2. 两种存储方式 storage/memory,前者会写入区块链,后者只是临时变量
默认的函数参数,包括返回的参数,是memory。
默认的局部变量是一个指向storage的指针。
状态变量,合约内声明的公有变量。是被分配了空间的storage型数据。
memory与storage之间的赋值,具体请看[这里](http://me.tryblockchain.org/solidity-data-location.html)


3. 另一个使得Solidity编程语言与众不同的特征:
```
用户想要每次执行你的 DApp 都需要支付一定的 gas(用以太币购买,因此,用户每次跑 DApp 都得花费以太币)。

```
为什么要这样?
```
用户想要每次执行你的 DApp 都需要支付一定的 gas(用以太币购买,因此,用户每次跑 DApp 都得花费以太币)。
```
节省`gas`的方法:
- 结构封装 (Struct packing)
uint即为uint256,另外还有uint32,uint64等,
因为存储数据比做个运算贵得多,所以当 uint 定义在一个 struct 中的时候,尽量使用最小的整数子类型以节约空间。 并且把同样类型的变量放一起(即在 struct 中将把变量按照类型依次放置),这样 Solidity 可以将存储空间最小化。
- 利用view函数节省gas
view 函数不会真正改变区块链上的任何数据——它们只是读取。
用 view 标记一个函数,意味着运行这个函数只需要查询你的本地以太坊节点,而不需要在区块链上创建一个事务(事务需要运行在每个节点上,因此花费 gas)。
因此在所能只读的函数上标记上表示“只读”的“external view 声明,就能为你的玩家减少在 DApp 中 gas 用量。
- `storage`(存储)非常昂贵
- 大多数编程语言中,遍历大数据集合都是昂贵的。但在 Solidity 中,使用一个标记了external view的函数,遍历比 storage 要便宜太多,因为 view 函数不会产生任何花销。
- 在数组后面加上 memory关键字,表明这个数组是仅仅在内存中创建,不需要写入外部存储,并且在函数调用结束时它就解散了。如:

```
uint[] memory values = new uint[](3);

```

- 其实就是将程序用到的数据范围严格限定,避免不必要的存储,以节约gas

在大多数编程语言中,遍历大数据集合都是昂贵的。但是在 Solidity 中,使用一个标记了external view的函数,遍历比 storage 要便宜太多,因为 view 函数不会产生任何花销。 (gas可是真金白银啊!)。


4. Solidity中的时间
unix时间戳,Solidity中还包含seconds,minutes,hours,days,weeks,years 等时间单位,分别会转换为相应的秒数存入uint中。
now变量(uint256类型),固定返回当前时间

5. Solidity的继承,可以像传统一样定义is a关系,但好像还可以用于分割文件,避免一个文件中的逻辑过于复杂。
```
contract cat is animal, creature{

}
```

# 第五章 代币和交易
1. #### 什么是代币?
一个 代币 在以太坊基本上就是一个遵循一些共同规则的智能合约——即它实现了所有其他代币合约共享的一组标准函数,例如 transfer(address _to, uint256 _value) 和 balanceOf(address _owner).
在智能合约内部,通常有一个映射, mapping(address => uint256) balances,用于追踪每个地址还有多少余额。
所以基本上一个代币只是一个追踪谁拥有多少该代币的合约,和一些可以让那些用户将他们的代币转移到其他地址的函数。
#### 什么是ERC20?
ERC20事实上是一个标准,满足这个标准的代币就叫ERC20代币,他们共享具有相同名称的同一组函数,相互之间可以以相同的方式进行交互。
类似的标准还有ERC721等,它规定每个代币都被认为是唯一且不可分割的。只能以整个单位交易它们,并且每个单位都有唯一的 ID。
使用标准的优势在于:在我们的合约中不必再实现交易逻辑。并且其他人可以为加密可交易的ERC721资产搭建一个交易所平台

2. 库的使用
```
import "./safemath.sol";

using SafeMath for uint256; // 这句写在contract中
```
SafeMath库是OpenZeppelin建立的用来防止数据溢出的数学运算库,using可以自动把库的所有方法添加给某个数据类型,这样就不用每次都c = add(a,b)而可以简写成c = a.add(b)了。

3. 注释风格
Solidity 社区所使用的一个标准是使用一种被称作 natspec 的格式,看起来像这样:
```
/// @title 一个简单的基础运算合约
/// @author H4XF13LD MORRIS 💯💯😎💯💯
/// @notice 现在,这个合约只添加一个乘法
contract Math {
/// @notice 两个数相乘
/// @param x 第一个 uint
/// @param y 第二个 uint
/// @return z (x * y) 的结果
/// @dev 现在这个方法不检查溢出
function multiply(uint x, uint y) returns (uint z) {
// 这只是个普通的注释,不会被 natspec 解释
z = x * y;
}
}
```
@title(标题) 和 @author (作者)很直接了.

@notice (须知)向 用户 解释这个方法或者合约是做什么的。 @dev (开发者) 是向开发者解释更多的细节。

@param (参数)和 @return (返回) 用来描述这个方法需要传入什么参数以及返回什么值。

注意你并不需要每次都用上所有的标签,它们都是可选的。不过最少,写下一个 @dev 注释来解释每个方法是做什么的。

# 第六章 应用前端和 Web3.js
用以太坊基金发布的 JavaScript 库 —— Web3.js,来为 DApp 创建一个基本的前端界面,和智能合约交互。

1. 什么是web3.js
以太坊网络是由节点组成的,每一个节点都包含了区块链的一份拷贝。当你想要调用一份智能合约的一个方法,你需要从其中一个节点中查找并告诉它:
- 智能合约的地址
- 你想调用的方法,以及
- 你想传入那个方法的参数

以太坊节点只能识别一种叫做JSON-RPC的语言。这种语言直接读起来并不好懂。当你你想调用一个合约的方法的时候,需要发送的查询语句将会是这样的:
`{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas":"0x76c0","gasPrice":"0x9184e72a000","value":"0x9184e72a","data":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}],"id":1}`
web3.js是以太坊基金发布的 JavaScript 库,封装了查询语句,提供更易用的交互界面。
Web3 Provider用来告诉我们的代码应该和哪个节点进行交互(就好比是传统的 Web 应用程序中为你的 API 调用设置远程 Web 服务器的网址)
可以运行你自己的以太坊节点来作为 Provider,也可以用第三方的服务:[Infura](https://infura.io/)。它维护了很多以太坊节点并提供了一个缓存层来实现高速读取。用 Infura作为节点提供者,你可以不用自己运营节点就能很可靠地向以太坊发送、接收信息。
MetaMask:浏览器中的身份(私钥)管理插件,让你在浏览器中访问DAPP,而不需要运行完整的以太坊代码。

2. 使用方法:
- Web3.js 需要两个东西来和你的合约对话: 它的 地址 和它的 ABI。
> ABI(Application Binary Interface): 意为应用二进制接口,它是以 JSON 格式表示合约的方法,告诉 Web3.js 如何以合同理解的方式格式化函数调用。
- Web3.js 有两个方法来调用我们合约的函数: call and send.
> call 用来调用 view 和 pure 函数。它只运行在本地节点,不会在区块链上创建事务。
> send 将创建一个事务并改变区块链上的数据。你需要用 send 来调用任何非 view 或者 pure 的函数。






Binary file added IPFS技术详解1.pdf
Binary file not shown.
Binary file added IPFS技术详解2.pdf
Binary file not shown.
Loading