用solidity实现第一个智能合约(类)

用solidity实现第一个智能合约(类)

一、编辑

// SPDX-License-Identifier: MIT
pragma solidity ^0.4.0;

contract Person{
  uint _height;   
  uint _age;
  address _owner;   // 合约的拥有者

  // 方法名和合同名相同时,就是构造函数
  // 在创建对象时,构造函数会自动最先被调用
  function Person() {
    _height = 165;    // 初始化身高
    _age = 23;
    _owner = msg.sender;    
  }


  // set方法,修改_height属性
  function setHeight(uint height) {
    _height = height;
  }

  	// 读取_height属性
    // constant代表方法只读
  function height() constant returns (uint) {   // constant代表方法只读
    return _height;
  }

  // 修改_age属性
  function setAge(uint age) {
    _age = age;
  }

  // 读取_age属性
  function age() constant returns (uint) {
    return _age;
  }

  // 读取_owner属性
  function owner() constant returns (address) {
    return _owner;  
  }
  
  function kill() {
    if (_owner == msg.sender) {
      // 析构函数, 销毁对象
      selfdestruct(_owner);
    }
  }
}

二、编译

三、部署(Deploy)

点击“Deploy”,显示了合约地址,就说明成功部署。

这个合约的地址是0xf8e81D47203A594245E36C48e151709F0C19fBe8

(PS:切换钱包地址(account), 字节码变了,合约地址就变了)

status:交易挖矿执行成功

transaction hash:

from:是我的钱包地址,交易手续费(gasPrice * gasUsed)是从这个钱包地址里扣的。

to:当前的合约Person

gas:花费的燃料费

transaction cost:交易成本。整个交易送到区块链耗费的gas量。

execution cost:执行成本。EVM执行合约代码消耗的gas量。

input:是合约代码的字节码(bytecode)。

四、测试

读取成功。


修改成功。

总结:

  • 当部署合约时,msg.sender是合约的所有者,如果合约中定义了一个名为“owner”的变量,则可以为其分配值(地址)msg.sender。

    此时,变量“owner”意味着合约的所有者

猜你喜欢

转载自blog.csdn.net/qq_44909497/article/details/124207220