demo.sol

pragma solidity ^0.4.21;

//定义合约
contract SimpleStorage{
    //状态变量,属于成员变量
    uint storedData;
    
    //构造函数
    constructor() public{
        storedData = 100;
    }
    
    //成员函数
    function set(uint x) public{
        storedData = x;
    }
    
    function get() constant public returns (uint retVal){
        return storedData;
    }
    
    //析构函数
    function destroy() public{
        selfdestruct(msg.sender);
    }
}

本地部署流程 (remix)

get可以查看到100 set可以设置变量 但是需要发送交易 destroy销毁后 合约无法使用set get

在编译详情可以看到BYTECODE

编好的二进制文件(Contract ByteCode)

 

如何部署

合约写好后,把.sol编译成EVM(Ethereum Virtual Machine)可用的二进制文件(Contract ByteCode)才能部署到Ethereum的区块链上执行,部署到区块链上的合约会有一个钱包地址(地址)和一样格式的合约地址(Contract Address)

部署后智能合约可自动执行。后续call智能合约的时候,使用者可以使用部署合约的钱包地址(所有者账户),或根据编写的智能合约条件,让其他钱包地址也能呼叫这个智能合约。呼叫智能合约,其实就是向这个合约地址发起交易,只是交易的不只是代币,而可以是智能合约提供的呼叫方法。