赞
踩
本篇课程开始,我们来学习一下如何使用solidity开发智能合约,由于博主对于solidity的学习,也是自学的,所以一些不足或有纰漏之处还望指出,大家共同进步,本系列课程会分很多节课讲述,从入门到进阶、实战,在课程最后,我们会通过所学知识来搭建几个不同类型的智能合约如Token合约、NFT合约等等,感兴趣的小伙伴加个关注吧。
这里引用一段摘自网络的话语来解释一下
智能合约是区块链中四大核心技术之一,这个概念最开始是在1994年,由知名密码学家尼克·萨博提出的,可由于技术以及其他的一些原因一直都没有落地,哪怕到了今天,智能合约已经在互联网中很多的应用,比如自动还款,无人机售货等等,也多是局限在个人和机构之间的智能合约,个人和个人之间的智能合约几乎没有,原因就在于“信任”问题,我们会发现,只要谈起合约,大多数都是陌生人跟陌生人之间有这种需求,而且还跟钱有关系,如果在没有第三方做担保的情况下我们之间做了个约定,我把钱打给你,结果你毁约了,不承认怎么办?所以智能合约一直没办法在个人与个人之间普及,后来随着区块链的出现,人们发现,区块链与智能合约十分的契合,因为区块链的很多特点,比如去中心化,数据的不可篡改等,可以从技术的角度,去解决陌生人之间的信任问题,这才使智能合约大规模的应用成为可能,这一阶段的开始以以太坊的诞生为标志。在区块链的基础上,以太坊应用了智能合约技术。智能合约使得以太坊可以实现更多功能,智能合约是一个非常重要的应用,于是,慢慢的,智能合约就成了区块链的核心技术之一。
总结来说,智能合约就是一个写好的程序脚本,它会在一个虚拟机上运行,且不受外界的干扰,所以能保证最大化的公平、公正、公开性。
以太坊作为区块链2.0的代表,它的设计理念和底层系统设计,让它逐渐被大众所认可,从现在开始我们就准备在以太坊上进行智能合约的开发(你可能听过bsc、trc、matic 等等区块链,它们都是基于以太坊虚拟机EVM开发的区块链网络,所以在以太坊上编写的智能合约,在这些网络上均可以使用)
solidity是用于实现智能合约的一种面向合约的高级编程语言,solidity受到C++、Python和JavaScript的影响,被设计为可运行在以太坊虚拟机(EVM)上,所以用户无需担心代码的可移植性和跨平台等问题。solidity是一种静态类型的语言,支持继承、库引用等特性,并且用户可自定义复杂的结构类型。
一个简单的合约文件大概如下图所示:
我们来看一段示例代码,里面有一些简单的注释,可以结合着查看
- // SPDX-License-Identifier: MIT
- pragma solidity ^0.8.17; //solidity编译版本声明
-
- import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; //第三方文件引入
-
- //合约声明
- contract DemoToken is ERC20 {
- address owner; //地址变量
- uint256 total = 5000000 * 10**18; //数字变量
-
- //构造器
- constructor() ERC20("demoToken", "DT") {
- owner = msg.sender;
- _mint(msg.sender, total);
- }
-
- //方法
- function getTotal() public view onlyOwner returns (uint256) {
- return total;
- }
-
- //修饰符
- modifier onlyOwner() {
- require(msg.sender == owner);
- _;
- }
- }
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17; //solidity编译版本声明
import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; //第三方文件引入
contract DemoToken is ERC20 {
- address owner; //地址变量
- uint256 total = 5000000 * 10**18; //数字变量
- constructor() ERC20("demoToken", "DT") {
- owner = msg.sender;
- _mint(msg.sender, total);
- }
- //方法
- function getTotal() public view onlyOwner returns (uint256) {
- return total;
- }
- //修饰符
- modifier onlyOwner() {
- require(msg.sender == owner);
- _;
- }
通过本节课程的学习,我们先是简单了解了智能合约的概念,接着又对一个智能合约的组成部分进行了简单的分析,让我们对智能合约有了一个基本的概念,下一节课,我们将要学习一下solidity里的变量类型有哪些
更多web3、区块链技术和前沿资讯,请关注公众号:外柏叁布道者(web3_preacher)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。