block chain 会整理一些关于区块链,web3, 智能合约的一些基础性知识。方便大家理解和记忆。

1.区块链

区块链是一种分布式的、去中心化的数据库技术,用于记录和验证交易和数据。它由一系列被称为区块的数据记录组成,每个区块包含了一定数量的交易信息和一个与之相关联的唯一标识符,称为哈希值。每个区块还包含前一个区块的哈希值,形成了一个由区块链串联而成的链式结构。

用一句话概括就是区块链就是一个去中心化的链式分布式账本。 BTC 就是一个典型的代表

2.区块链有哪些特点

区块链具有以下几个主要特点:

3.什么是智能合约

智能合约简介

智能合约是以太坊应用程序的基石。 它们是存储在区块链上的计算机程序,让我们能够将传统合约转换成数字化合约。 智能合约完全符合逻辑 — 遵循 IFTTT (if this then that)逻辑结构。这意味着它们完全按照程序设定执行并且不能更改。

Nick Szabo 创造了“智能合约”这一术语。 1994 年,他撰写了概念简介(opens in a new tab)↗,1996 年又撰写了探索智能合约的功能(opens in a new tab)↗。

Nick Szabo 设想了一个建立在这些自动化、加密安全流程上的数字化市场。 在这种数字化市场中,交易和业务功能可以在无需信任的情况下进行,无需中间人。 以太坊上的智能合约将这一设想付诸实践。

4.智能合约与Solidity语言

智能合约是运行在链上的程序,合约开发者可以通过智能合约实现与链上资产/数据进行交互,用户可以通过自己的链上账户来调用合约,访问资产与数据。因为区块链保留区块历史记录的链式结构、去中心化、不可篡改等特征,智能合约相比传统应用来说能更公正、透明。

Solidity是一门面向合约的、为实现智能合约而创建的高级编程语言,在 EVM 虚拟机上运行,语法整体类似于 Javascript,是目前最流行的智能合约语言,也是入门区块链与 Web3 所必须掌握的语言。

Solidity 合约是以.sol为后缀的文件,无法直接执行,需要编译为 EVM(Ethereum Virtual Machine)可识别的字节码才能在链上运行。 ssl

编译完成后,由合约账户进行部署到链上,其他账户可通过钱包与合约进行交互,实现链上业务逻辑。

5.以太坊账户

一个以太坊帐户是一个具有以太币 (ETH) 余额的实体,可以在以太坊上发送交易。 帐户可以由用户控制,也可以作为智能合约部署。

以太坊有两种帐户类型:

具体查看第20页 EVM 这两种帐户类型都能:接收、持有和发送 ETH 和 token, 与已部署的智能合约进行交互

EOA 账户(外部账户):

合约 账户:

合约账户有两种操作,一种是写操作,一种是读操作。写操作是向链上写入数据,需要使用网络存储空间。所以写操作需要消耗 Gas费。 读操作链上读取数据,不需要消耗Gas费。

6.字节

我们知道以太坊账户是一个 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 20个字节十六位的地址。一个字节是8位。能表示最大的数是255.

1111 1111  //一个8位的字节

= 1     1     1     1     1     1     1     1
  2^7 + 2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0
= 128 + 64  + 32  + 16  + 8   + 4   + 2   + 1

= 255

我们取其中一个字节比如0xf3

0xf3  //16进制
f    3
 \    \
1111 0011  //二进制

blockchain

区块链基础知识 交易 递归长度前缀 (RLP) ABI Gas