用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”意味着合约的所有者。 
  










