主页 > imtoken苹果版官网 > 《Solidity智能合约开发技术与实战》配套实验

《Solidity智能合约开发技术与实战》配套实验

imtoken苹果版官网 2023-03-02 07:46:38

1、日志编程,参考以下步骤练习日志编程。 1、参考721节练习Remix中查看日志数据的方法。 2. 参考例7-4练习通过底层日志接口记录日志。 3. 参考例7-5练习调用web。

3. eth.getTransactionReceipt方法获取交易日志的方法 实验6 以太坊DApp开发框架Truffle的目的和要求 1 了解Truffle开发框架的基本特性 2 了解Truffle项目管理的方法 3 了解实现Truffle框架中智能合约编程方法四:学习如何使用Truffle中内置的测试框架方法五:通过实例学习如何使用Truffle框架开发以太坊智能合约DApp 开发框架内置函数如作为智能合约编译、链接、部署和二进制管理。 了解Truffle框架中的项目模板称为Truffle Boxes,它提供了一组有用的项目模板。 项目模板包含一类DApp的基础框架 知道Truffle内置自动测试框架,可以轻松测试智能合约 在Truffle框架中使用MetaMasko5 练习使用Truffle React框架开发基于以太坊智能DApp contracts6 练习在 Truffle 框架中测试合约7 练习编写 Truffle 示例项目 pet store pet-shop

1.安装使用个人区块链Ganache 参考以下步骤练习安装使用个人区块链Ganache1 从Truffle官网Ganache首页下载Ganacheo2 使用Windows应用安装器打开下载的安装文件,根据提示安装Ganacheo3启动 Ganache 后,点击 NEW WORKSPACE 按钮练习创建以太坊工作空间 确认创建工作空间后,可以看到 Ganache 区块链的详细信息。 详情窗口默认显示一组 Ganache 区块链账户信息。 CentOS中每个账户都有100ether4 在 中执行如下命令,全局安装ganache-clio npminstall -g ganache-cli5 在命令行中执行ganache-cli命令启动Ganache测试区块链 确认ganache-cli测试区块链提供10个测试账户,每个账户包含100ETH的测试币

2. Truffle项目管理,参考以下步骤练习开发认证服务器项目O1。 参考821节练习下载项目模板MetaCoin,了解项目包含的目录和文件。 2.参考

8.

2.1节练习使用,truffle init命令创建一个空白Truffle工程,了解空白工程中包含的目录和文件3参考

8.

2.1节,打开Truffle项目的配置文件truffle-config.js了解各个配置项的情况参考4

8.

2.3节练习使用truffle编译命令编译合约5参考

8.

2.4节练习使用truffle migrate命令部署合约

3. 智能合约编程 参考以下步骤练习智能合约编程 1 在项目模板MetaCoin中查看合约MetaCoin的内容,了解合约包含的功能 2 执行ganache-cli命令启动Ganache个人测试链3 在Truffle项目目录下执行truffle控制台命令可以打开Truffle控制台4 在控制台执行如下语句确认可以查看合约摘要内容 truffledevelopment let instance=await MetaCoin.deployed truffle development instance5 执行如下语句在Truffle控制台确认可以调用合约MetaCoin的sendCoin函数letinstance=await MetaCoin。 已部署 letaccounts=等待网络

3. eth.getAccounts 实例.sendCoinaccounts

[1],10,{来自:帐户

[0]}6 在Truffle控制台执行如下语句确认合约MetaCoin可以部署并查看合约地址 let Instance=await MetaCoin.new Instance.address7 在Truffle控制台执行如下语句练习从第一个测试账户到合约 MetaCoin Transfer const instance=await MyContract.deployedO;const result=await instance.sendTransaction{from:accounts

[0],网页

3.utils.toWei1,ether};; 8 在Truffle项目目录下执行truffle develop命令运行Truffle Develop控制台工具,确认Truffle Develop已经启动了下面的测试区块链,地址如下

127.

0。

0.1:9545/9参考

8.

3.3节运行项目MetaCoino,在CentOS虚拟机进入桌面模式,打开fireFox浏览器,浏览以下网址:8080确认可以看到MetaCoin的示例页面

4、在Truffle框架中使用MetaMask,参考以下步骤练习在Truffle框架中使用MetaMasko1

8.

3.4节练习在Chrome浏览器2中安装MetaMask钱包参考

8.

3.4节练习 在CentOS虚拟机的Firefox浏览器中安装MetaMask钱包3Ganache测试区块链,将Ganache测试账户导入MetaMask钱包并确认可以看到账户中有100ETH的测试以太币 5 Project MetaCoino在CentOS虚拟机的Firefox中 在浏览器中访问MetaCoin的示例页面 6 从Ganache网络测试账户中选择另一个不同于默认账户的账户作为接收转账的账户,复制到To Address文本框,在Amount文本框中输入1,然后点击Send MetaCoin按钮,MetaMask钱包中会弹出Gas确认支付交易。 点击“确认”按钮完成交易

5. 使用Truffle React框架开发基于以太坊智能合约的DApp。 参考以下步骤练习使用Truffle React框架开发基于以太坊智能合约的DApp。 1 在/usr/local/truffle目录下创建一个react子目录来保存工程模板reacto了解到以太坊采用PoW共识算法,但是为了避免PoW算法带来的巨大能量损失和低性能,以太坊还引入了权益证明算法。 PoS算法类似于股东机制。 概率越大,实验内容 本次实验主要包括以下内容: 1 练习搭建测试环境 2 练习安装以太坊客户端Getho 3 练习操作以太坊私链

一、搭建测试环境实践 按照以下步骤搭建测试环境 1 下载Oracle VirtualBox虚拟机软件 2 在Windows中安装Oracle VirtualBoxo3以供参考

2.

3.1节设置CentOS虚拟机静态IP地址4参考231节Oracle VirtualBox安装CentOS虚拟机实践5参考

2.

3.1节练习使用WinSCP工具在宿主机和CentOS服务器之间传输文件6参考231节练习在CentOS虚拟机上建站7参考

2.

3.1节练习在CentOS虚拟机上安装图形界面

2. 安装以太坊客户端Geth实践 按照下面的步骤安装以太坊客户端Getho2 执行以下命令下载项目模板reacto cd /usr/local/truffie/react truffleunbox react3 下载完成后参考表8- 5 了解项目模板 React web 应用中包含的前端资源文件 5 在项目目录下运行truffle develop,然后执行以下命令在内置测试区块链中编译部署两个文件,Migrations.json和SimpleStorage.json,可以在contracts目录下生成。 6 查看分析index.jSx、index.cssx、index.html、Appjs等前端文件,了解其工作原理。 7 从truffledevelop列出的账户列表中选择一个账户的私钥,参考834节介绍的方法,导入到MetaMask钱包中,确认账户中有100ETH的测试币 8 打开另一个终端并执行以下命令启动项目 cd /usr/local/truffle/react/client npmstart9 打开火狐浏览器,点击MetaMask图标,选择之前导入的账号10,访问如下网址,打开本例页面: 300011 Confirmation 当打开该页面时,会弹出MetaMask界面要求用户确认转账,如图8-47所示,点击“确认”按钮,交易确认页面默认账户余额变为

56. 在Truffle框架中测试合约,参考以下步骤。 在 Truffle 框架中练习合约。 1、参考Section 841练习在CentOS中安装Mocha测试框架。 2. 参考例8-4编写Mocha测试脚本。 3.在项目react中安装mocha,然后在项目react目录下执行如下语句运行测试脚本,/node_modules/mocha/bin/mocha./test/test.j s4 确认测试可以通过 5 执行MetaCoin项目目录下的ganache-cli命令启动Ganache测试链 6 在MetaCoin项目目录下执行truffle migrate命令部署智能合约 7 查看并理解MetaCoin项目模板中包含的测试脚本metacoin.js 8 执行以下命令运行测试脚本truffle test./test/metacoin.js 9 确认可以通过3个测试

7.编写Truffle示例项目pet shop pet-shop参考以下步骤练习编写Truffle示例项目pet shop pet-shopo1参考

8.

5.1节练习 从Truffle官网下载pet-shop示例工程。 下载的压缩包解压后,上传到/usr/local/truffle/pet-shop目录下。 2 参考

8.

5.1节查看和理解pet-shop项目模板3中包含的目录和文件参考

8.

5.1小节,在contracts目录下创建Adoption.sol文件,在里面写入代码 4 参考

8.

第 5.3 节编译和部署智能合约 Adoptiono5 参考

8.

5.3节编写入口函数init 6参考的代码

8.

5.3节写了initWeb3函数,用于初始化Web3库7参考

8.

5.3节编写initContract函数初始化智能合约8参考853节编写markAdopted函数从合约中获取并标记宠物领养人账户地址9参考

8.

5.3节编写handleAdopt函数,用于实现第10页参考点击领养按钮的功能

8.

第 5.3 节编写应用程序的主要 index.htmlo11 引用

8.

第 5.5 节安装和配置 MetaMasko12 渗透

8.

5.6 运行应用 在CentOS虚拟机桌面环境打开Firefox,浏览如下网址: 3000 确认在宠物店实例首页可以查看宠物列表和宠物领养状态 13 点击领养按钮宠物下 领养宠物 确认后会弹出MetaMask面板,要求用户支付交易手续费。 点击“确认”按钮完成交易。 确认后,显示宠物列表时,被领养宠物下方的领养按钮变为Sussesso实验 7.使用以太坊测试网络目的及要求 1 了解主网和测试网的概念 2 了解连接方法以太坊网络通过Infura节点集群 3 学习在测试网中完成以太坊交易的方法 实验准备 首先你要明白以太坊网络可以分为Mainnet和Mainnet 测试网Testnetb主网和测试网都有没有交集,它们有不同的创世区块,是两条完全独立的区块链 了解Ropsten是以太坊官方提供的测试网络,使用PoW共识机制在Ropsten网络上挖矿难度很低,但是挖出的以太币没有值购买以太坊秒合约,仅用于开发和测试。 您也可以免费申请 Ropsten 网络的以太币。 Ropsten可以说是一个非常接近主网的测试网。 了解 Infura 是一个托管的以太坊节点集群,您可以在 Infura 节点集群上免费部署智能合约,而无需搭建自己的以太坊节点进行测试。 您可以选择通过 Infura 连接以太坊主网或测试网。 无论是测试还是在线部署,都通过Infura节点集群连接到以太坊。 网络是一个很方便的选择理解ethereumjs-tx是Web

3.js中用于实现以太坊交易的JavaScript库。 实验内容 本实验主要包括以下内容: 1 练习通过以太坊钱包 MetaMask 申请 Ropsten 测试币 2 练习注册 Infura 账户 3 练习通过 Infura 连接以太坊网络 4 练习通过 ethereumjs -tx 实现与以太坊的交易

1、通过以太坊钱包MetaMask申请Ropsten测试币,参考以下步骤通过以太坊钱包MetaMask申请Ropsten测试币 1.

8.

3.4节练习在Chrome浏览器中安装MetaMask钱包 2 在MetaMask钱包中选择Ropsten测试网络,确认如果之前没有申请过Ropsten测试币,账户中应该有OETHo3 点击购买按钮,打开以太币充值页面,滚动到页面下方,可以看到获取Ropsten网络的以太区。 点击“获取以太币”按钮,打开测试币获取页面。 4 点击request1ether fromfaucet按钮,稍等几秒,打开MetaMask钱包,确认1ETHo已添加到账户余额

2. 注册Infura账号,参考以下步骤练习注册Infura账号。 1 在Infura官网首页,“登录”按钮左侧有一个下拉框,可以在其中选择“Chinese ZH”,切换到中文环境。 2 点击“注册”按钮,根据提示输入邮箱地址和密码,即可注册Infura账号。 提交注册邮件后,您将收到一封激活邮件。 请注意,此电子邮件可能会被视为垃圾邮件。 点击邮件底部的CONFIRM EMAILADDRESS按钮激活Infura账号 4 使用新注册的用户名和密码登录,确认即可进入个人主页

3. 通过 Infura 连接到以太坊网络。 参考以下步骤练习通过 Infura 连接到以太坊网络。 1、参考Section 922创建一个Infura项目,记录项目ID和项目密钥。 2. 参考例9-1练习使用infura项目ID和项目密码。 将密钥连接到Ropsten测试网络创建Web3对象的方法确认程序可以打印web3对象的数据

2.

3.2节安装Golang2参考

2.

3.2 安装gcc3 参考232设置下载代理 4 参考232下载GO版以太坊源码 5 参考232安装GO版以太坊源码 5 参考

2.

3.2节将geth文件所在目录添加到环境变量PATH中 6 执行geth version命令查看Geth版本,确认以太坊客户端Geth已经安装成功

3. 操作以太坊私链实践 按照以下步骤操作以太坊私链1 参考

2.

第 3.3 节练习使用 genesis.json 文件定义创世块 2 参考

2.

3.4节创建开发者账号实践3参考235节开发者模式启动私有链实践4参考

2.

Section 3.6 practice checking account 5 refer to section 236 practice creating an account 6 refer to section 236 practice checking account balance 7 参考

2.

Section 3.7 私链挖矿练习 8 参考238练习私链转账操作 实验2 Solidity基本编程目的和要求 1 了解Solidity语言的基本语法 2 学习使用实时在线的Solidity编辑器Remix编写Solidity程序 3 学习使用Visual StudioCode开发Solidity程序 4 学习Solidity基本编程方法 实验准备 1 了解Remix是以太坊提供的实时在线Solidity编译器,无需安装配置任何软件,可以完成在线以太坊智能合约的开发、在线编译、编译在线测试和在线部署2了解Visual StudioCode是微软推出的一款跨平台编辑器,支持各种编程语言的插件可以使用Visual StudioCode开发Solidity程序3 理解常量的概念和定义方法 d变量 4 了解Solidity语言的数据类型 5 了解Solidity语言常用语句的使用 6 了解Solidity语言智能合约和函数的编程方法 4练习Solidity语言常用语句编程 5练习Solidity语言智能合约和函数编程

一、实时在线Solidity编辑器Remix 参考以下步骤练习实时在线Solidity编辑器Remixo1 访问Remix IDE中文版网站,在Remix页面点击文件管理器中的按钮,输入hello。在弹出的输入文件名对话框中点击0K按钮,hello.sol会出现在浏览器文件夹中,同时在文件编辑器中打开一个名为browser/hello.sol的编辑窗口3Solidity基础编程参考示例3 -1 在“hello.sol”选项卡中输入代码,查看支持的编译器版本 5 按Ctrl+S按钮或点击“开始编译”按钮编译程序 6 删除例3-1中的public,按Ctrl+ S键,确认错误代码行前面会出现一个E3图标,表示这行代码有错误

2.使用Visual StudioCode开发Solidity程序,参考以下步骤练习使用Visual StudioCode开发Solidity程序 1.

3.

1.3节下载安装Visual Studio Codeo2参考

3.

1.3节安装solidity插件 3 在编辑窗口输入字符,例如输入pra,确认后会触发自动提示功能

3. Solidity基础编程参考以下步骤。 练习 Solidity 基础编程。 1. 请参考示例 3-2。 练习使用 Solidity 常量。 2. 请参考示例 3-3。 练习 Solidity 字符串编程。 3. 请参考示例 3-4。 练习使用地址地址类型编程。 4.参考例3 -5 练习枚举型编程 5 参考例3-6 练习结构型编程 6 参考例3-7 练习映射型编程 7 参考例3-8 练习定长数组编程 8 参考例3-9练习变长数组编程

4. Solidity语言常用语句编程,参考以下步骤练习Solidity语言常用语句编程 1 参考例4-1练习使用赋值语句 2 参考例4-2练习使用if语句 3 参考例4-3 练习使用if...else if...else...语句 4 参考例4-4 练习for语句 5 参考例4-5 练习使用while语句 6 参考例4- 6 练习do...while...语句的使用 7 参考例4-7 练习for语句中continue语句的使用 8 参考例4-8练习使用break语句结束循环

5. Solidity语言常用语句编程购买以太坊秒合约,参考以下步骤练习Solidity语言常用语句编程 1 参考Example 5-1 练习公共常量getter accessor的使用 2 参考Example 5-2 练习使用智能合约构造函数 3参考例5 -3 实践实现智能合约之间的继承 4 参考例5-

4. 例5-5 练习函数的定义和使用 5 参考例5-5 练习while语句的使用 6 参考例5-6 练习payable修饰符的使用 7 参考例5-7 练习函数修饰符的使用 8 参考例5- 8、5-9 函数参数练习 9 参考例5-10 自毁函数练习 10 参考例5-11 函数重载编程练习 11 参考例5-12 函数库使用练习 12 参考例5- 13 和例 5-14 练习使用 Fallback 函数 13 参考例 5-15 和例 5-16 练习使用抽象合约和接口 14 参考例 5-15 和例 5-16 练习使用抽象合约和interface 15 参考例5-17练习Revert函数 实验3 智能合约和函数式编程的目的和要求 1 理解智能合约的状态变量、构造函数、智能合约之间的继承等概念 s 2 了解定义函数的方法,以及函数修饰符和函数参数 3 学习自毁函数和函数重置 加载和内置函数 4 学习如何为用户系统开发微服务 实验准备 1 了解每个智能合约可以contain declarations such as declarations such as state variables, functions, function modifiers, and events, and can inherit a smart contract from other smart contracts 2 了解状态 变量的可见性包括 publicx private 和 internalo3 了解智能合约中只能有一个构造函数智能合约实例化时会自动调用构造函数 4 了解继承智能合约后,子合约自然会拥有状态变量和父合约中状态变量的访问权限 公共和内部函数 5 了解函数修饰符包括可见性修饰符,状态修饰符,支付 able modifiers, and custom modifiers 函数修饰符等类型 6 理解自毁函数是一个特殊的函数,有固定的名称和固定的参数,用于销毁当前智能合约,并将当前合约账户中的余额发送到指定地址。 自毁函数的名字是selfdestruct,它有一个且只有一个address参数,用于指定接收当前合约账户余额的账户Address 7 理解在Solidity中,函数库Libraries是一个集合职能。 它类似于智能合约,也对应一个地址,但函数库只能部署一次。 8 理解抽象合约和接口都可以定义设计智能合约的规则并指定它们的子合约。 合约必须实现的功能 9 了解以太坊使用状态回滚机制来处理异常。 如果发生异常,则取消当前消息调用和子消息调用产生的所有状态变化,并返回一个错误信号给调用者。 实验内容 本实验主要包括以下内容: 1. 智能合约基础编程练习 2. 函数式编程练习

1. 智能合约编程 参考以下步骤练习智能合约基础编程 1 参考例5-1练习public constant getter accessor的用法 2 参考例5-2练习constructor的用法 3 参考例5 -3 实践智能合约继承 4 参考例5-15 实践如何使用抽象合约 5 参考例5-16 实践合约的多重继承

2.函数编程,参考以下步骤练习函数编程 1.参考例5-4和例5-5使用智能合约练习函数 2.参考例5-6练习智能合约之间的继承 3.参考参考Example 5-9 练习函数引用如何使用类型参数 4 参考Example 5-10 练习自毁函数的用法 5 参考Example 5-11 练习函数重载的用法 6 参考Example 5- 12 练习函数库的使用 7 参考Example 5-13和Example 5-14 练习Fallback函数的使用 8 参考Example 5-17练习使用revert函数识别错误并恢复当前的方法称呼。