区块链Blockchain学习
怎么现在的misc区块链内容越来越多了,不得不学了
什么是区块链?
区块链(英语:blockchain或block chain)是借由密码学与共识机制等技术建立与存储庞大交易资料链的点对点网络系统。
从字面上看:区块链是由一个个记录着各种信息的小区块链接起来组成的一个链条,类似于我们将一块块砖头叠起来,而且叠起来后是没办法拆掉的,每个砖头上面还写着各种信息,包括:谁叠的,什么时候叠的,砖头用了什么材质等等,这些信息你也没办法修改。
从计算机上看:区块链是一种比较特殊的分布式数据库。分布式数据库就是将数据信息单独放在每台计算机,且存储的信息的一致的,如果有一两台计算机坏掉了,信息也不会丢失,你还可以在其他计算机上查看到。
区块链是一种分布式的,所以它是没有中心点的,信息存储在所有加入到区块链网络的节点当中,节点的数据是同步的。节点可以是一台服务器,笔记本电脑,手机等。
有没一两句话能说明白区块链的?
有的。
麻将作为中国传统的区块链项目,四个矿工一组,先碰撞出13个数字正确哈希值的矿工可以获得记账权并得到奖励。
基本名词&&工具使用
钱包
顾名思义就是存储钱的钱包
这里推荐使用MetaMask,chrome浏览器上的一个插件。
应该也可以使用 imtoken ,手机上的钱包
注意每个钱包有一个地址,是收款的地址。而且注册账号时会让你记一些助记词,用来在忘记密码(私钥)的时候找回密码或钱包。
切换网络
在写CTF题目时候可以看比赛题目部署在哪个网路上,可以点击metamask左上角切换网络
这个主要看比赛的网络。
如何获取以太币?
主要有一些水龙头可以每日拿一点,网上可以搜到
1.ZAN Faucet - Get Ethereum Testnet and Solana Devnet Tokens
以及这个收藏了一些常用的:
然而公链的水龙头大多数都是需要钱包有0.01ETH的,所以还是比较难拿到的。
后面去部署私链吧
助记词
助记词是从建立账户的时候自动生成的,一般是12个或者24个,用来帮助找回密码。
但是助记词并不是随机生成的,而是有一定的规律的,而且助记词是有范围的,一共2048个
这里是所有2048个助记词(英文): bips/bip-0039/english.txt at master · bitcoin/bips
如果从题目中拿到的一些助记词可以从这里缩小范围。
一些基本的工具和准备
以太坊:
IDE(编写Solidity合约):
Remix - Ethereum IDE — Remix - Ethereum IDE
水龙头:
Faucet Link
区块链浏览器:
Ethereum(ETH)区块链浏览器
Solidity了解
学solidity语言,Solidity by Example | 0.8.26
智能合约漏洞靶场:The Ethernaut
👆这个靶场比较常用,想刷题的话可以在这个上面刷题。
介绍
区块链题目一般都会给出三个链接:RPC(Remote Procedure Call)、Faucet(水龙头/水管)和题目链接
RPC:可以大概理解为链的提供者,我们需要链接上一个RPC后才可以在上面进行创建账户、部署合约、调用合约等操作。
Faucet:可以理解为免费的提款机(水龙头就是源源不断有水流出的意思),通常把自己钱包的公钥输进去后就会给你打钱,以太坊中的很多操作都需要付Gas(燃料费,可以理解为手续费),所以创建账户后首先要记得去水龙头拿钱。
但要注意如果用的是公共测试链的话需要一定拿钱门槛,而且给的还贼少,主链的话就不可能免费了,通常要用USD去换。
题目链接:用来部署题目、提交答案等,通常题目代码在这拿。
创建私链
先下Ethernaut
1 | git clone git@github.com:OpenZeppelin/ethernaut.git |
然后安装:
1 | npm install yarn -g |
还要安装foundry(这个是linux的):
1 | curl -L https://foundry.paradigm.xyz | bash |
安装完之后直接network就可
1 | yarn network |
执行完后会打印出20个测试账户,各有10000 ETH,刷题时使用这些账户,就不用折腾公网上那些水管了
这个窗口不能关闭,否则链就关了,所以下面命令需要另外开一个窗口
接着编译题目
1 | yarn compile:contracts |