以太坊智能合约:从概念到实操指南

这篇具有很好参考价值的文章主要介绍了以太坊智能合约:从概念到实操指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、智能合约概念介绍(Smart Contract)

智能合约是一组自动执行预定义规则的代码,类似于我们生活中的自动售货机。当用户选择商品并支付后,售货机会自动释放商品,用户不必担心交易的信任问题,因为售货机按照预设的程序操作。类似地,信用卡的自动还款也是一种实现了智能合约逻辑的机制:在设定自动还款之后,到期时系统会自动扣款。

智能合约的这一概念,在数字货币和区块链领域得到了更深入的应用和发展。2008年,一个化名为中本聪的人或团队发表了《比特币:一种点对点的电子现金系统》论文,这标志着比特币的诞生。比特币的底层技术框架,即区块链,后来成为了许多技术创新的基础。2013年,受比特币启发,维塔利克·布特林提出了以太坊概念,这被称为第二代区块链平台。以太坊的独特之处在于它引入了智能合约功能,使其不仅仅是一个数字货币,而是一个完整的编程平台。在以太坊上,任何掌握Solidity(这个语言与JavaScript的语法类似)的人,只要支付足够的矿工费,都可以编写和部署智能合约。

以太坊存在多个网络版本。最核心、也是交易价值最大的,被称为“主网络”或“主链”。此外,还有为了开发和测试目的而设立的“测试网络”。这些测试网络允许开发者免费获取测试用的以太币,以方便进行智能合约的测试和验证。此外,还可以自建私有的以太坊网络,称为“私链”。正因为这样的设置,让我们可以不需花费任何成本就能学习智能合约。

二、智能合约环境搭建

1.环境准备:

  • Chrome

  • MetaMask插件

  • Remix

2.常用测试链:

  • Goerli

  • Sepolia

3.必备网站:

以太坊区块链的信息查看:

真实链: https://etherscan.io/

Remix:Solidity语言的在线IDE:Remix - Ethereum IDE

4.使用的编程语言:

Solidity语言,这种语言类似JavaScript语言,下面的链接是我solidity的学习笔记

Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.A new tool that blends your everyday work apps into one. It's the all-in-one workspace for you and your teamhttps://reveone.notion.site/Solidity-d33f8b95a9c74bb4817f471bbd88730a?pvs=4

三、智能合约基本操作演示:

1.在测试链上实现账户之间的交易:

首先我们需要先开第一个账户钱包,在chrome插件商城中下载Metamask,下载好后在插件栏中点击这只狐狸就会弹出一个注册界面:

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

在弹出的注册界面中进行账号注册,这里需要注意在注册的过程中会有一个账户助记词,可以用来恢复账户,需要存起来。其他就没啥难度,这里就不截图了。

创建完账户之后可以去测试链中先给自己的钱包点ETH(以太币):

自从Ropsten测试链关闭后感觉领取测试币变难了,这里介绍一下领取测试币的方法,首先打开小狐狸开启测试链网络,选择Sepolia测试链:

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

接着访问下面地址:

Sepolia FaucetA fast and reliable Ethereum Sepolia testnet faucet for blockchain developers.https://sepoliafaucet.com/

这个网站需要注册Alchemy的账号,注册好后将自己的钱包地址复制下来:

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

然后粘贴到下图中的输入框中点击send me。

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

稍等一会儿就可以看到钱包里面领取到了0.5测试币:

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

tips:这个网站每24小时只能领取一次。

第一个账户注册好并且钱包里面已经有钱之后,接着再创建第二个账户:

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

如上图选择账户右侧的下拉按钮,然后点击Add account,在弹出的输入框中输入账户名即可新建一个账户。

创建好两个账户就可以尝试实现账户之间的交易了,在一个账户与另外一个账户交易时首先需要知道对方的钱包地址,比如这里我的Account 1需要向Account 2中转0.1ETH,首先要复制Account 2的钱包地址也就是0x9开头的那一串十六进制值:

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

然后回到Account 1的操作界面,点击发送按钮:

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

在下图中输入Account 2的地址:

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

然后输入要转的数额后点下一步,然后确认0.1ETH就会转到Account 2的钱包中

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

2.部署智能合约:

这里先介绍一下Remix,这是一个开源的、基于Web的IDE(集成开发环境)和工具,专为以太坊智能合约的Solidity语言开发和部署而设计。在这个平台上可以部署测试我们的智能合约。Rimix 的网址为:

Remix - Ethereum IDEhttp://remix.ethereum.org/

首先打开Remix网站后,新建一个babysol.sol文件(solidity语言的文件后缀),将附件里的代码贴进去

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

pragma solidity >=0.4.22 <0.6.0;

contract baby{   //声明了一个名为baby的合约

		address public owner; 
		event own(address owner,string warn); 

		constructor () public {    
				owner = msg.sender;  
		}

		function changeowner() public { 
				owner = msg.sender;
			    emit own(msg.sender, "owner changed!");
		}
}

这里注意一下第一行代码,pragma表示的是solidity编译器的版本,这个代码的依赖的版本号为0.4.22到0.6.0。可以在网站的最右边选择编译器的版本,这里选择0.4.26,然后勾选Auto complile,编译器就会自动编译程序。

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

选择编译的下面那个图标,并在ENVIRONMENT中选择前面两个都可以:

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

这时MetaMask会弹出一个窗口,这里是想要申请相应权限:

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

这里将所有账户全部添加进去,之后就是下一步然后连接即可。

之后选择下方的黄底按钮(Deploy)将合约推送至测试链,点完之后注意到编译器下方显示的信息,这里会有一定的等待时间:

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

直到编译器下方出现一个对勾,就表示部署成功了:

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

此时左边窗格也会出现和合约交互的一个接口:

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

出现上述信息就表示合约部署成功了,接着尝试测试一下这个合约功能:

从代码中可以看到合约交互的接口有两个功能一个是变更合约的拥有者一个是查看当前合约的拥有者,这些功能都是之前代码写了的,这里详细分析一下代码:

pragma solidity >=0.4.22 <0.6.0;   //编译器的版本

contract baby{  //声明了一个名为baby的合约

		address public owner;       //owner是一个公开的状态变量,它用来存储合约的所有者的地址。
		event own(address owner,string warn);   //own是一个事件,它可以被外部监听器监听到。当合约的所有者发生变化时,这个事件会被触发,同时会传递新的所有者的地址和一个警告消息。

		constructor () public {   //constructor在JavaScript用于创建和初始化class,也就是构造方法
				owner = msg.sender;       //当这个合约被部署到以太坊网络时,这个构造函数会被自动执行。msg.sender表示当前交易的发送者,也就是部署合约的地址。所以,这个构造函数的作用是初始化合约的所有者为部署合约的地址。
		}

		function changeowner() public {   //构造函数
				owner = msg.sender;    //这个函数允许任何人调用它来更改合约的所有者。调用这个函数的人会成为新的所有者。并且会触发own事件,通知外部监听者所有者已经发生变化。
			  emit own(msg.sender, "owner changed!");
		}
}

也就是说我们只要在MetaMask插件里换一个账户然后选择下面的changeowner按钮,合约的所有者就切换了:

以太坊智能合约,智能合约漏洞相关分析,智能合约,区块链

至此智能合约基本操作的介绍就到这结束了,下一篇将对智能合约的漏洞进行介绍。文章来源地址https://www.toymoban.com/news/detail-761360.html

到了这里,关于以太坊智能合约:从概念到实操指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 以太坊智能合约开发(五):Solidity成绩录入智能合约实验

    每个学生分别部署合约Student.sol ,保证只有自己可以修改姓名。老师部署合约StudentScore.sol,用于录入学生成绩,查询学生信息。查询学生信息时,需要调用学生部署的合约Student.sol。 student.sol合约,用于学生对自己信息进行管理。 学生的基本信息作为状态变量: 声明构造函

    2024年02月07日
    浏览(47)
  • 1-完全理解以太坊智能合约

    区块链技术的核心概念是分布式账本,它是许多参与者共享的特定类型的数据库。 这个特殊的数据库只是一个交易列表,记录着网络中发生的每笔交易。每个人都可以拥有自己的交易列表备份,再加上强有力的货币激励措施消除各方之间信任成本。 使用区块链,可以把信任

    2024年02月04日
    浏览(42)
  • go语言操作以太坊智能合约

    操作中要注意版本问题 geth版本、golang版本等 在remix环境中写好合约后,进行编译得到abi文件 简单举例 Hello.sol合约 编译后abi文件(Hello.abi)内容 然后需要一个 abigen工具 可以将abi、bin等编译后的智能合约文件内容生成go代码 abigen可以在geth官网下载geth的时候下载GethTools版本

    2024年02月09日
    浏览(36)
  • 以太坊 – 部署智能合约到Ganache

    目录 1. Ganache本地区块链 1.1 主界面 1.2 设置 2. 开发智能合约 2.1 初始化项目 2.2 添加package.json文件 2.3 添加智能合约源文件 2.4 编译项目 3. 部署智能合约到Ganache 3.1 更新配置文件 3.2 创建迁移脚本  3.3 执行迁移命令 首先启动Ganache,创建本地的以太坊区块链网络。 本地

    2024年02月16日
    浏览(47)
  • 以太坊–智能合约开发介绍及环境搭建

    目录 1. 智能合约的概念 2. 智能合约的优点  3. 智能合约开发 3.1 支持智能合约的区块链 3.2 以太坊智能合约开发工具 3.3 以太坊智能合约开发语言 4. 智能合约开发环境搭建 4.1 准备工作 4.2 Node 与 NPM 4.3 Truffle 框架 4.4 Ganache 4.5 Metamask 4.6 VS code 与 Solidity插件 智能合约 (

    2024年02月05日
    浏览(45)
  • 以太坊智能合约语言Solidity - 3 数组

    1字节(Byte) = 8位 (bit), bytes32 = 256位,bytes1 实质上就等于 int8 固定长度的数组一旦被定义就无法再更改,并且长度在一开始就会被显式定义 我们再来创建一个新的文件用来编写代码 字节数组无法进行基本运算,但是可以比较 字节数组还支持其他一些逻辑运算,具体计算结果

    2023年04月08日
    浏览(59)
  • 以太坊 – 使用truffle console访问智能合约

    🍁 博主简介 :         🏅云计算领域优质创作者         🏅2022年CSDN新星计划python赛道第一名         🏅2022年CSDN原力计划优质作者         🏅阿里云ACE认证高级工程师         🏅阿里云开发者社区专家博主 💊 交流社区 :CSDN云计算交流社区欢迎您的

    2024年02月02日
    浏览(48)
  • 以太坊虚拟机EVM介绍,智能合约详解

    指的是“一套以数字形式指定的承诺,包括合约参与方可以在上面执行这些承诺的协议”。早在1994年,美国计算机科学家尼克·萨博(Nick Szabo)就提出了智能合约的概念。 智能合约是一种基于区块链技术的自动执行合约的计算机程序。它们是一组以代码形式编写的、在区块

    2024年02月04日
    浏览(42)
  • 以太坊智能合约开发:Solidity 语言快速入门

    在本文中,我们从一个简单的智能合约样例出发,通过对智能合约源文件结构的剖析与介绍,使大家对Solidity语言有一个初步的认识。最后,我们将该智能合约样例在 Remix 合约编译器中编译、部署,观察其执行结果。 在开始之前,我们先对Solidity有个初步的了解,即Solidity是

    2023年04月09日
    浏览(51)
  • 第四章 以太坊智能合约solidity介绍

    Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言,设计的目的是能在以太坊虚拟机上运行。 本章大概介绍合约的基本信息,合约的组成,语法方面不做过多的介绍,个人建议多阅读官方文档效果更佳,后续的章节会开发ERC20代币合约案例以便于更好的学习智

    2024年02月06日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包