以太坊的组成部分
- P2P网络:以太坊在以太坊网络上运行,该网络可在TCP端口30303上寻址,并运行一个协议。
- 交易:以太坊交易时网络消息,其中包括发送者,接受者,值和数据的有效载荷
- 以太坊虚拟机:这是一个执行字节码的基于堆栈的虚拟机
- 数据库:以太坊的区块链被称为数据库,本地存储在每个节点上,包含序列化后的交易和系统交易
- 客户端:以太坊有几种可互操作的客户端软件实现
以太坊的组成部分
- 账户
- 普通账户,存储和代码均为空
- 合约账户,包含存储和代码
- 地址
- 交易
- 可以发送以太币和信息
- 向合约发送的交易可以调用合约代码,并以信息数据为函数参数
- 向空用户发送信息,可以自动生成以信息为代码块的合约账户
- gas:以太坊用于执行智能合约的虚拟燃料,也就是以太币交易的手续费
以太坊的货币
- 以太坊的货币单位成为以太(ether),又可以称为ETH
代币
- 代币(token)被称为通证,本意为令牌,代表有所有权的资产、货币、权限等在区块链上的抽象
- 可代替通证
- 非同质通证
MetaMask数字钱包
私钥?:965ed69e03a652eeb7d43ac461f8dd3306a6f3b27f64971b929a401ed966f370
INFURA水龙头网站密码:enfadfhaweiwer32#Dfsdh
使用Solidity编写智能合约
在以太坊上使用 Solidity 编写的智能合约执行每一步操作都需要燃烧一定数量的 Gas
- Remix写一个水龙头合约
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Faucet {
// 以太币的默认发送数量
uint public constant faucetAmount = 0.001 ether;
// 向调用者发送以太币
function withdraw() public {
require(address(this).balance >= faucetAmount, "Not enough funds in the faucet");
payable(msg.sender).transfer(faucetAmount);
}
// 获取当前合约的余额
function getBal