美文网首页ETH
3分钟漫谈以太坊The DAO事件,浅入浅出区块链(3)

3分钟漫谈以太坊The DAO事件,浅入浅出区块链(3)

作者: 假装在去天使之城的路上 | 来源:发表于2018-10-21 13:37 被阅读8次

    这片博文主要是继续的简要的介绍一下The DAO事件,以及ETH和ETC的关系。

    这是一系列关于区块链的漫谈博客。用讲故事的方法,漫聊一下区块链。其中也会穿插一些区块链相关概念,以及编程的介绍。主要目的是漫谈,每个主题之间相对独立,在阅读的时候,可以选择你有兴趣的部分阅读。

    虽然目的是漫谈,但准确的信息是博文的基本,如果有不准确的地方,请留言或者发消息,我会及时订正。

    复习一下DAO

    DAO是Decentralized Autonomous Organization的简称。
    可以理解为:去中心化自治组织。任何符合以下特征的组织,都可以被成为DAO组织。
    DAO组织的操作过程:发布智能合约,发行代币(ICO),众筹资金,运营和投资众筹的资金。这整个过程也被成为DAO项目。

    复习一下The DAO事件

    德国一家专注“智能锁”的公司发布了一个DAO项目,黑客利用一个DAO项目的漏洞,转移了一笔巨款,然后以太坊的白帽黑客们,通过软分叉,和硬分叉的方法拿回了被盗的以太币。

    复习一下Fallback Function 回调函数

    contract MyContract {
        //这个没有函数名,没有参数,没有返回值的函数,就叫做Fallback Function
        function() payable { }
    
        //这个函数的函数名为:buySomething,所以不是Fallback Function
        function buySomething() external payable {
      }
    }
    
    • Fallback函数,在两种情况下会被调用:当智能合约里,没有处理请求的相应的函数的时候;当智能合约没有其他附属数据,只是在接受以太币的时候。
    • 虽然Fallback函数,没有参数,但是 msg.data 可以在函数里使用,从而得到调用者的相关信息。
    • 基本上,如果向一个合约地址转账,那么合约内必须有回调函数,否则转账将会被拒绝。

    msg.sender 等全局变量

    在学习以太坊DApp编程的时候,我们经常会看到 msg.sender 等的使用,但是我们没有定义这些变量,这些变量是什么意思呢?
    msg.sender 等这样的变量或者函数,是以太坊区块链默认提供的,其中包含了在处理请求的时候,请求方的相关信息。

    • msg.sender : 返回请求发送方的地址。
    • msg.data: 包含了所有请求发送方的信息。这个数据是不可变的,也不会永久性的存储到区块链里面。
    • msg.gas : 请求发送方剩余的gas数量。
    • msg.sig : 发送方需要的处理函数的地址的前4个bytes。(智能合约可以提供很多种功能,很多时候我们只需要使用其中的一个功能的时候,我们可以指定智能合约分配个每个功能的ID来实现。)
    • msg.value : 我们发送给这个智能合约的Ether,以wei为单位。可以附带发送信息。(wei是描述Ether的最小单位,就好像一分钱是人民币最小的单位一样)

    全部的函数和变量可以在下方官网查看:
    Special Variables and Functions

    图片来源

    图片来自网络

    相关链接

    相关文章

      网友评论

        本文标题:3分钟漫谈以太坊The DAO事件,浅入浅出区块链(3)

        本文链接:https://www.haomeiwen.com/subject/tqdbzftx.html