目录
一、简介
Solidity 是面向对象的语言,由于合约是运行在虚拟机中,因此在合约里面可以访问区块链系统本生的一些内置数据,比如 block 区块信息,合约被调用时的 msg 交易信息。
这些对象是区块链系统提供的内置对象,位于全局命名空间,可以直接使用。
实战场景: 在智能合约中访问内置对象。
二、知识点
智能合约
内置对象
状态变量
智能合约的运行
三、菜鸟实战
// SPDX-License-Identifier: GPL-3.0
// Author: 菜鸟实战
// Description: 智能合约如何使用内置对象
// 编译器版本
pragma solidity >=0.7.0 <0.9.0;
// 知识点
// # 智能合约
// # 内置对象
// # 状态变量
// # 智能合约的运行
// 合约名称
contract ObjectAction {
// public 变量会自动提供查询方法
address public VarAdmin; // 地址类型状态变量
uint256 public VarRandNum; // 部署时生成的随机数
bytes32 public VarHash; // hash 值
constructor() public {
VarAdmin = msg.sender; // 调用者
VarHash = blockhash(0); // 返回 0 块的 hash 值
// 使用 时间戳,调用者,hash 共同模拟生成一个随机值,得到一个 100 以内的数
VarRandNum = uint256(keccak256(abi.encode(VarAdmin, VarHash, block.timestamp))) % 100;
}
}
四、运行结果
编译成功后部署运行