安装node
brew install node
安装solc,solc-cli
npm install -g solc
npm install -g solc-cli
安装solidity
brew tap ethereum/ethereum
brew install solidity
brew link --overwrite solidity
写一个简单的合约并保存为demo.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
contract MyContract {
uint256 public myNumber; // 状态变量
modifier onlyOwner() { // 修改器
require(msg.sender == owner, "Only owner can call this function.");
_;
}
address public owner; // 状态变量
constructor() { // 构造函数
owner = msg.sender;
myNumber = 42;
}
function setNumber(uint256 _number) public onlyOwner { // 设置状态变量值的函数
myNumber = _number;
}
}
生成abi文件
solc --abi demo.sol -o build/
[
{
"inputs": [
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
],
"name": "myNumber",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_number",
"type": "uint256"
}
],
"name": "setNumber",
"outputs": [
],
"stateMutability": "nonpayable",
"type": "function"
}
]