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