Solidity 智能合约入门(二)----------基础语法
address 以太坊地址的长度,20个字节
int/uint 变长的有符号或无符号整型。支持以8递增,uint8到uint256。uint 默认为uint256。
bool 布尔型
mapping 键值对映射关系,如mapping(address => uint) 类似 key value
fixed/ufied 定点数?
string 字符串
byte/byte32 字节 数组
struct 结构体 类似字典?
struct test{ address addr unit amount }
public、private、internal external 四种访问权限
- 1.函数默认声明为public,即可以以internal方式调用,也可以通过external方式调用。可以理解为能够被内部合约访问和外部合约访问。
- 2.Internal声明的只允许通过internal方式调用,不能被外部合约。而external能够被外部合约访问。
- 3.private和internal类似,都不能被外部合约访问,唯一的不同是private函数不能被子类调用,而internal可以。
pure 返回非变量
view constant 返回全局变量
pragma solidity ^0.8.7; //指定版本 contract Testcoin //合约名 { uint storedData; function get() public view returns (uint) { return storedData; } }
constructor 构造函数修饰符
看起来还有个装饰器的语法的语法 用于modifier 关键字
下面写个无限增发的 测试
pragma solidity ^0.4.21; //指定版本
contract Ceshicoin //合约名
{
uint storedData;
address public sender;
mapping (address => uint) public balances;
event Sent(address from, address to, uint amount);
constructor init(){
sender = 0x6526b6b3B454b04E5F340d8501F70ebB82201817; // 初始化 设置合约创建者地址
}
modifier checkowner(){ // modifier 装饰器关键字
if(msg.sender!=sender) return; // 直接return
_;
}
function adminsend(address receiver, uint amount) public checkowner { // set之前先调用checkowner方法
balances[receiver] += amount;
}
function send(address receiver, uint amount) public {
if (balances[msg.sender] < amount) return;
balances[msg.sender] -= amount;
balances[receiver] += amount;
emit Sent(msg.sender, receiver, amount);
}
}
初始化没搞懂。。。
创建完先调用下 init方法
之后address就被设置成内置地址 只有内置地址才可以调用 adminsend方法
无限增发

require
类似于 try if
constructor 构造函数关键字 在合约创建时运行
event 事件是以太坊虚拟机(EVM)日志功能中提供的一组方便的接口。当事件被触发时,它们会将参数保存到交易日志中——区块链中一种特殊的数据结构。这些日志与合约地址相关联,并且会被打包进区块中,因此可以被永久访问(不过 Serenity 版本或许会有所改变)。注意,日志和事件的数据是不能被合约访问的,即便是创建它们的合约也不行(不然常规的数据存储就没意义了)
msg.sender
msg.sender 是 solidity 中的一个全局变量,他表示的是当前调用者(或智能合约)的地址
msg.value 交易转入本币的数量
now 交易打包进块链的时间戳
blackhash 返回区块的hash
block.number 打包该区块的高度
address.balance 给定地址本币数量
transfer 代表把eth转到合约账户
address.call 调用指定地址合约的方法
selfdestruct 自毁
继承(Inheritance)
当代码很长的时候我们可以把它们拆分成不同的合约,通过继承来获得其他合约的功能
contract welcome { function hi() public returns (string) { return "hi!"; } } contract welcome2 is welcome { function hello() public returns (string) { return "hello"; } }
引入(Import)
solidity 也支持 import(solidity 文件后缀是 sol) import "./sayhello.sol";

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~