• 2022/04/09 Solidity_概念理解


    # 2022/04/09 概念理解

    ### 涉及到的工具

    - `MetaMask` --->浏览器插件钱包
    - `Remix` --->浏览器的`solidity`在线编译工具
    - `Geth` --->以太坊客户端(`Go`语言)
    - `web3.js` --->以太坊`js API`库
    - `Canache` --->以太坊客户端(测试环境私链)
    - `Truffle` --->开发、测试框架
    - `Hardhat` --->开发、测试框架

    ### 环境准备

    - `Go runtime`
    - `git`
    - `node.js`
    - `npm`
    - `yarn`
    - `vscode`

    #### `Mac`装机环境

    - `brew`

    ### 区块链(公链)发展简史

    - 比特币:--->点对点的记账链路,功能单一,就是记账,转账 --->块生成速度慢 --->链条式、分布式的存储 --->只有简单的简本
    - 以太坊:--->拓展区块链技术的脚本做交易的控制,拓展支持智能合约的区块链平台 --->块生成速度快,但是链路上出现情况就会拥堵 --->共识算法(`pwo\pos`)
    - 3.0:--->高性能、大吞吐量、开发者友好、用户友好 --->`US`项目
    - 以太坊四个重大分叉
    - `Ice Age`:--->引入指数难度硬分叉,促使向`proof-of-stake`过渡
    - `The Dao`(`Dao`是去中心化自治组织--->所有的事情投票决定,包括社区发展):--->扭转被攻击的`Dao`合约,形成以太坊(`ETH`回滚数据,会滚到被攻击之前的分叉)和以太坊经典(`ETC`不回滚数据,继续运行被攻击的链路)两个竞争系统的硬分叉--->`Dapp`一旦跑起来就不可更改
    - `Tangerine Whistle`:--->改变`IO`运算的`gas`计算,从拒绝服务攻击中清除累积状态
    - `Spurious Dragon`:--->解决更多拒绝服务攻击媒介的硬分叉,提供重放攻击保护机制

    ### 以太坊基本概念和工作原理

    #### 以太坊的特点

    - 开源的、全球分布的计算基础设施 --->没有中心化的东西可以控制全部的节点,自己起一个节点的话也可以参与其中
    - 可以存储智能合约(`smart contract`)的程序,被以太坊自动执行
    - 使用区块链作为底层数据结构,使用区块链来同步和存储:系统状态和以太币(`ether`本身不是作为货币,本身是作为计量和约束执行资源(合约)的成本)
    - 以太坊本质是一个基于交易的状态机(`transaction-base state machine`) --->整个区块链的状态,矿工挖矿时候把所有的交易打包在一起,出一个区块.然后广播.让其他矿工确认,如果都认同的话那么共同的账本就增长了,就在后面多加一个区块.(这是区块链的概念) --->区块链有状态,有了一个区块就代表区块当中发生了那么多的交易,大家的状态就会发生改变.每增加一个区块状态就会改变. --->跟踪整个存储在区块链上的所有数据(所有的数据都可以)
    - 程序员可以任意开发`Dapp`还可以转币

    #### 以太坊的组成成分

    **以太坊的本质还是使用了区块链技术,所以区块链有的东西以太坊都有**

    - `P2P`网络:--->基于`P2P`网络进行通讯,以太坊主网络是在`TCP`端口30303选址,两个节点互相发现的时候通信接口是30303 --->协议:`DEVp2p`
    - 交易(`transaction`): --->以太坊交易是网络消息,包括:
    - `sender`发送者
    - `reeiver`接收者
    - `value`值
    - `payload`一段数据
    - 以太坊虚拟机(`EVM`): --->以太坊状态转换由虚拟机(`EVM`)处理,自己当以太坊节点其实是启动了以太坊虚拟机的一部分
    - 数据库(`Blockchain`以太坊底层的数据存储结构): --->以太坊的区块链作为数据库(通常是`google`的`levelDB`)本地存储在每个节点上,包含序列化后的交易结果和交易发生后系统状态,一旦记录上链就是永久存储,每个人都有副本
    - 客户端: --->代表作:`Go-Ethereum(Geth)`和`Parity`

    ### 以太坊与比特币的区别与联系

    ### 以太坊客户端使用

    ### 深入理解智能合约

    ### `solidity`语法

    ### `web3.js`调用

    ### 工具以及复杂调用

  • 相关阅读:
    城市生态规划关键技术方法之三:城市生态系统服务功能理论与方法
    AE中用矢量数据剪裁栅格
    城市生态规划的基本原理与程序
    城市生态规划关键技术方法之一:生态系统健康理论与方法
    城市生态规划的基本概念、内容与方法
    终于找到使用Sql Server Management Studio导致蓝屏的罪魁祸首了
    保证相同类型的MDI子窗体只会被打开一次的方法
    甩掉数据字典,让Sql Server数据库也来一个自描述
    新鲜试用IE8 beta2
    让我目瞪口呆的program.exe
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/16573382.html
Copyright © 2020-2023  润新知