zoukankan      html  css  js  c++  java
  • solidity学习笔记(一)

    0x01 前言

      学习solidity最好的教程就是官方手册,这里我在知乎找到了一篇问答:https://www.zhihu.com/question/266048727,将学到的知识点都归纳总结。

      官方文档:https://solidity-cn.readthedocs.io/zh/develop/introduction-to-smart-contracts.html      https://docs.soliditylang.org/en/latest/

      其他手册:https://learnblockchain.cn/docs/solidity/solidity-in-depth.html

      token:https://learnblockchain.cn/2018/01/12/create_token/      https://learnblockchain.cn/2018/03/23/token-erc721/

      其他资料:https://github.com/yippee-ki-yay/eth-dev-reading-list

      靶场 :https://cryptozombies.io/en/course   https://ethernaut.openzeppelin.com/       https://capturetheether.com/challenges/

    0x02 基本概念

     一. 智能合约

    1.基本概念:一个智能合约是一套以数字形式的承诺,包括合约参与者可在中间执行这些承诺的协议。通俗点来说,智能合约就是写在区块链上的代码,一旦某个时间触发合约上的条款和规则,

    代码便自动执行。“智能”理解为不需要人为操纵,满足条件自动执行。因为你在区块链上不会提前消费,这时你有10元,自动扣费/交易支付时,就会触发智能合约,然后自动扣费。

    以太坊网络上运行程序就称之为智能合约, 它和其他的程序一样,也是代码和数据(状态)的集合。

    2.语言:智能合约现在的主要编程语言是 Solidity 和 Vyper ,Solidity 更为成熟一些,Solidity 合约文件扩展名是 .sol

      

    3.运行环境和编译:EVM(Ethereum Virtual Machine)以太坊虚拟机 用来执行以太坊上的交易,提供智能合约的运行环境。以太坊上运行的时合约的

    字节码形式,需要我们在部署之前先对合约进行编译。编译器有:remix、solc

    4.钱包:以太坊客户端,可以理解为开发者工具,提供账户管理、挖矿、转账等功能。Geth客户端基于GO语言开发, Geth提供了一个交互式命令控制台,通过命令控制台中包含了以太坊的各种功能(API)。

    5.部署:将合约字节码发布到区块链上,并用一个特定的地址来标示这个合约,这个地址称为合约账户。

        账户分为两种:外部账户(被四要控制,不关联任何代码);合约账户(有合约代码且与之关联)。

        与比特币中的UTXO不一样,以太坊使用的是“账户“概念,比特币没有账户概念。一个外部账户到合约账户会激活这些代码,从而使合约进行一系列操作。

    我们可以将外部账户理解为指令发出者。执行流程图:

     EVM中的每条指令称为一个opcode,占一个字节,由于stack(执行堆栈)列宽为256bits,最大深度为1024,所以所有的OpCode指令集最多不超过256.

    首先PC会从合约代码中读取一个OpCode,然后从JumpTable中检索出对应的operation(与其相关的函数集合)。通过操作,计算所需要的油费,如果邮费耗光则为失败,

    返回ErrOutOfGas错误。如果油费充足,则调用execute()执行该指令,根据指令类型的不同,会分别对Stack、Memory或者StateDB进行读写操作。

    下面这篇文章还讲到了如何调用智能合约函数,跟合约代码一起送到解释器里的还有一个Input,而这个Input数据是由交易提供的,就是通过压栈的规则、input格式来的,。

    链接:https://learnblockchain.cn/2019/04/09/easy-evm/

    6. Token(代币)

      代币标准:这里列举了以太坊代币的标准:https://www.jianshu.com/p/998ebfa05098

      代币分类:https://juejin.cn/post/6844903747601039368 

      剖析ERC721:https://learnblockchain.cn/2018/03/23/token-erc721/

       创建自己的数字货币(ERC20 代币):https://learnblockchain.cn/2018/01/12/create_token/

      

    珍惜时间,只错一次
  • 相关阅读:
    Spring 控制反转容器(Inversion of Control – IOC)
    理解依赖注入(DI
    创建一个简单的Spring应用
    Spring开发环境搭建(Eclipse)
    Spring框架模块
    Spring 框架介绍
    spring教程
    Bulma CSS
    Bulma CSS
    Bulma CSS
  • 原文地址:https://www.cnblogs.com/TEAM0N/p/14950342.html
Copyright © 2011-2022 走看看