niche|小众/区块链/函数式(3门语言 · 全套10阶案例)

EVM智能合约、传统银行系统、纯函数式编程语言,代币、NFT、DeFi、老式企业系统完整合约代码

域名 yiliancai.com | ICP备案:粤ICP备2026063737号 | 非商业个人学习站点

← 返回资料库总首页 | 集团主站 static.yiliancai.com

Solidity EVM区块链智能合约语言

简介:以太坊系区块链专用语言,发行代币、NFT、DApp、质押借贷、跨链合约开发

小白入门案例1:基础Hello合约

// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; contract HelloWeb3 { string public site = "doc.yiliancai.com"; function getMsg() public view returns(string memory){ return "亿联财Solidity区块链教程"; } }

小白入门案例2:数字存储读写合约

// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; contract NumStore{ uint public num; function set(uint v) public { num = v; } }

基础实操案例3:极简ERC20代币模板

// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; contract SimpleToken{ mapping(address => uint) public balanceOf; uint totalSupply = 1000000 * 1e18; constructor(){ balanceOf[msg.sender] = totalSupply; } function transfer(address to,uint amount) public { require(balanceOf[msg.sender]>=amount,"余额不足"); balanceOf[msg.sender] -= amount; balanceOf[to] += amount; } }

基础实操案例4:管理员白名单权限

// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; contract WhiteList{ address public owner; mapping(address => bool) public allow; constructor(){ owner = msg.sender; } modifier onlyAdmin(){ require(msg.sender==owner,"无权限"); _; } function addWhite(address a) public onlyAdmin { allow[a]=true; } }

进阶项目案例5:基础NFT铸造合约

// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; contract SimpleNFT is ERC721{ uint public tokenId; constructor() ERC721("YiLianNFT","YLC"){} function mint() public { tokenId++; _safeMint(msg.sender,tokenId); } }

进阶项目案例6:ETH质押锁仓合约

// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; contract StakeLock{ struct User{ uint amount; uint lockTime; } mapping(address => User) userInfo; uint lockDay = 30 days; function stake() external payable { userInfo[msg.sender] = User({amount:msg.value,lockTime:block.timestamp+lockDay}); } function withdraw() external { User storage u = userInfo[msg.sender]; require(block.timestamp >= u.lockTime,"锁仓未到期"); payable(msg.sender).transfer(u.amount); delete userInfo[msg.sender]; } }

进阶项目案例7:多签钱包资产管理合约

// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; contract MultiSign{ address[] public owners; uint requiredSign; struct Tx{ address to; uint value; bool done; uint signCnt; } Tx[] txList; mapping(uint => mapping(address => bool)) signedMap; constructor(address[] memory _owners,uint _sign){ owners=_owners;requiredSign=_sign; } }

企业精通案例8:恒定乘积AMM交易池

// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; contract SimpleAMM{ uint reserveA; uint reserveB; function swapAtoB(uint amountA) external { uint amountB = reserveB - (reserveA * reserveB)/(reserveA+amountA); reserveA += amountA; reserveB -= amountB; } }

企业精通案例9:持币分红收益池

// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; contract DividendPool{ mapping(address => uint) public share; uint totalShare; uint totalReward; function addShare(address user,uint num) external { share[user]+=num; totalShare+=num; } function depositReward() external payable { totalReward += msg.value; } function claim() external { uint reward = totalReward * share[msg.sender] / totalShare; payable(msg.sender).transfer(reward); } }

企业精通案例10:跨链资产托管桥合约

// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; contract CrossBridge{ address relayer; mapping(bytes32 => bool) orderExec; constructor(address r){ relayer = r; } function lockAsset(address token,uint amount) external {} function release(bytes32 orderId,address user,uint amount) external { require(msg.sender==relayer && !orderExec[orderId],"校验失败"); orderExec[orderId] = true; } }

剩余2门语言(COBOL银行系统、Haskell函数式)统一10阶行业专属案例模板。