【Solidity】Remix在线环境及钱包申请

好久没有学习区块链方面的知识了,目前通过自学大致掌握了Fabric联盟链的搭建,链码编写、部署,api调用,可以独立开发出一些基于fabric的应用,感觉开发出去中心化的应用还是很有意思的,因为他与之前开发的ssm项目这种传统中心化的app相比具有自己独特的优点。第一次开发出来很有成就感,并且还申请了自己的软著。
在这里插入图片描述

但是最近看论文,感觉有很多的实验都是用公链做的,基本上都是Ethereum,使用的是Solidity语言来编写的智能合约,所以自己就学习了一下。希望通过笔记给自己带来更深刻的学习印象。

1. 什么是Ethereum?

Ethereum是公有链的一种,中文称之为以太坊。和区块链类似,他也有自己的代币,叫作以太币。Ethereum使用的共识合约是PoS。
在这里插入图片描述
感兴趣的朋友可以去看我前面的博文 区块链博文
以太坊是区块链2.0时代的代表性产物,其推出了图灵完备的智能合约,这一创新为区块链和分布式应用带来了革命性的变化。我们可以通过创建自己的智能合约并且在缴纳一定的gas(可以理解成让矿工帮助执行合约的小费)后,就能够在分布式的区块链上运行自己合约并且执行相应的功能。它们可以用于各种领域,如去中心化金融(DeFi)、数字身份、供应链管理、社交媒体和游戏。

而现实世界就是通过智能合约来和区块链上的世界创建联系。好比区块链是一个很大的分布式数据库,而写合约就像是写sql一样面对区块链上的数据进行了各种操作。可见智能合约的编写是运用区块链技术的核心技术。而以太坊使用最广泛的编程语言来实现智能合约的就是Solidity。Solidity 是一种面向合同的智能合同编程语言,特别设计用于创建以太坊和以太坊兼容区块链上的智能合同。

2. Solidity开发Remix环境初识

开发Solidity我选择的是在线开发工具Remix,比较方便而且现在大家的网络都是比较好的,使用这个在线的开发工具感觉还是挺不错的。余运行环境可以采取metamask这个网页钱包,后面会介绍。
http://remix.ethereum.org/ 这个就是Remix的在线开发地址:
在这里插入图片描述在左侧的导航栏我们可以先来看一下官方提供的合约:
在这里插入图片描述想必大家一眼看上去很熟悉吧,没错,Solidity也是一门面向对象的语言,有着编程基础的上手起来也是不难的。现在来写一个简单的hello合约,先在导航栏右健contract,然后新建一个合约(如下左图)
图1图2

// SPDX-License-Identifier: GPL-3.0

//pragma solidity >=0.8.2 <0.9.0;
pragma solidity^0.8.11; // 代表向上兼容

contract hello {
    string hellomsg;

    //just like constructor in java
    constructor(string memory _hellomsg){
      hellomsg = _hellomsg;
    }
}

在编写完成后,直接ctrl+s后编译,编译完成后如上右图所示。然后我们点击导航栏第四个以太坊图表的那个按钮就可以部署了:
在这里插入图片描述并且我们可以部署多次每一次运行出来的合约对象都是不一样的。每运行一次就会产生一个合约对象并且每个合约对象都有一个地址,比如我这里运行了两次,第一次的地址0xd9145CCE52D386f254917e481eB44e9943F39138,而第二次的地址:0xd8b934580fcE35a11B58C6D73aDeE468a2833fa8
在这里插入图片描述
再来介绍一下一些其他功能,“ENVIRONMENT” 代表你要选择的以太坊区块链环境或模拟环境,用于测试和运行你的智能合约。
在这里插入图片描述

Remix VM” 代表 Remix 的本地虚拟机环境,用于模拟以太坊网络以进行智能合同开发和测试。这是 Remix 提供的一个内置的虚拟以太坊网络环境,允许开发者在本地进行智能合同的测试,而不需要连接到实际的以太坊网络。当然我们也是可以连接到实际的以太坊网络中来部署我们的合约的,我的截图中的MataMask就是实际的以太坊网络。
在这里插入图片描述

3. metamask安装

安装地址:https://metamask.io/ 注意科学上网
在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述
请注意一定要保管好自己的助记词,这相当于你的密钥。
在这里插入图片描述
现在拥有了自己的钱包之后,需要去网站来申请到一些免费的代币。
在与以太坊(Ethereum)和其他区块链网络交互的钱包或应用程序中,“水龙头”(Faucet)是一个常见的术语,指的是一个允许用户获取免费加密货币的服务或工具。这通常是为了帮助新用户获得一些加密货币,以便他们可以开始在区块链网络上执行交易或与智能合同互动。
MetaMask 是一款以太坊钱包扩展,它允许用户管理以太坊资产、进行交易和与智能合同互动。一些以太坊网络提供了水龙头服务,这意味着用户可以通过水龙头获取一定数量的免费以太币(ETH)用于测试和学习以太坊网络。这些免费以太币通常用于支付交易费用(Gas)以及与智能合同互动。
用户通常需要提供自己的以太坊地址(Ethereum address),然后水龙头会将一定数量的ETH发送到该地址。请注意,这些水龙头通常用于测试和学习,分发的ETH数量可能有限,并且可能在一定时间后停止分发。如果您是新手或想要尝试以太坊网络的功能,可以尝试寻找适用于您的以太坊网络的水龙头服务。

在这个网站目前可以申请到免费的代币 mumbaifaucet.com
在这里插入图片描述
将你的以太坊地址输入点击Send Me MATIC即可。如果交易没有直接成功的话,就打开安装的metamask,应该会看到允许链接之类的操作,点击即可。获取到matic后,需要将网络连接到到这个mumbai的网络,在这个网络上才可以使用它的代币。通过 chainlist.org 这个网站,
在这里插入图片描述此时点开matamask允许连接到mumbai,就会看到我们的网络中多一个mumbai
在这里插入图片描述

然后我们可以使用Mumbai网络连接到真实的网络来部署合约了,只需要将网络切换到MetaMask即可。
在这里插入图片描述
在部署合约后,钱包会通知你是否同意花费gas去部署,点击确认后就会部署到实际的网络中
在这里插入图片描述
在之前的 mumbaifaucet.com 网站点击交易可以看到具体地马蹄走向:
在这里插入图片描述这次的介绍到这里就结束了,下期再学习一下基本的语法,还是通过具体的实例合约来学习语法比较快,毕竟也是面向对象的语法,学起来还是有点基础的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/115981.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

el-table表格设置——动态修改表头

(1) 首先是form表单写表单设置按钮&#xff1a; &#xff08;1.1&#xff09;使用el-popover&#xff0c;你需要修改的是this.colOptions&#xff0c;colSelect: <el-popover id"popover" popper-class"planProver" placement"bottom" width&…

USB PD v1.0快速充电通信原理

1 原理 本篇文章讲的快速充电是指USB论坛所发布的USB Power Delivery快速充电规范&#xff08;通过VBUS直流电平上耦合FSK信号来请求充电器调整输出电压和电流的过程&#xff09;&#xff0c;不同于本人发布的另一篇文章所讲的高通Quick Charger 2.0规范&#xff0c;因为高通QC…

【sql注入】sql关卡1~4

前言&#xff1a; 靶场自取 level-1 测试注入点 POC: 1,1,1,1"",1/1,1/0 》存在注入点 爆破 POC: id-1andextractvalue(1,concat(0x7e,user(),0x7e))-- level-2 尝试注入点 POC1:admin POC2:admin POC3:adminandsleep(3)-- POC4: adminandif(1,1,0)0-- POC…

Adobe acrobat 11.0版本 pdf阅读器修改背景颜色方法

打开菜单栏&#xff0c;编辑&#xff0c;首选项&#xff0c;选择辅助工具项&#xff0c;页面中 勾选 替换文档颜色&#xff0c;页面背景自己选择一个颜色&#xff0c;然后确定&#xff0c;即可&#xff01;

产品手册应该如何组织内容,以便用户能够快速找到所需信息?

产品手册应该如何组织内容&#xff0c;以便用户能够快速找到所需信息&#xff1f;这是一个关乎用户体验和产品文档效力的重要问题。当用户需要了解产品的功能、操作指南或故障排除时&#xff0c;他们希望能够轻松地找到准确、清晰的信息&#xff0c;而不是在冗长的手册中迷失方…

Leetcode—421.数组中两个数的最大异或值【中等】明天写一下字典树做法!!!

2023每日刷题&#xff08;十九&#xff09; Leetcode—421.数组中两个数的最大异或值 算法思想 参考自灵茶山艾府 实现代码 class Solution { public:int findMaximumXOR(vector<int>& nums) {int maxValue *max_element(nums.begin(), nums.end());int highId…

Java CAS是什么,它的底层原理?

文章目录 前言一、CAS是什么二、CAS底层原理1、UnSafe类&#xff08;Native方法&#xff09;2、CAS思想&#xff08;自旋锁&#xff09;3、为什么使用CAS&#xff0c;不用synchronized&#xff1f;4、CAS缺点5、ABA问题&#xff0c;原子引用更新&#xff1f; 前言 对于CAS部分…

『精』Vue 组件如何模块化抽离Props

『精』Vue 组件如何模块化抽离Props 文章目录 『精』Vue 组件如何模块化抽离Props一、为什么要抽离Props二、选项式API方式抽离三、组合式API方式抽离3.1 TypeScript类型方式3.2 文件分离方式3.3 对文件分离方式优化 参考资料&#x1f498;推荐博文&#x1f357; 一、为什么要抽…

系列六、Mybatis的一级缓存

一、概述 Mybatis一级缓存的作用域是同一个SqlSession&#xff0c;在同一个SqlSession中执行两次相同的查询&#xff0c;第一次执行完毕后&#xff0c;Mybatis会将查询到的数据缓存起来&#xff08;缓存到内存中&#xff09;&#xff0c; 第二次执行相同的查询时&#xff0c;会…

day02_第一个Java程序

在开发第一个Java程序之前&#xff0c;我们必须对计算机的一些基础知识进行了解。 常用DOS命令 Java语言的初学者&#xff0c;学习一些DOS命令&#xff0c;会非常有帮助。DOS是一个早期的操作系统&#xff0c;现在已经被Windows系统取代&#xff0c;对于我们开发人员&#xf…

前端面试题之HTML篇

1、src 和 href 的区别 具有src的标签有&#xff1a;script、img、iframe 具有href的标签有&#xff1a;link、a 区别 src 是source的缩写。表示源的意思&#xff0c;指向资源的地址并下载应用到文档中。会阻塞文档的渲染&#xff0c;也就是为什么js脚本放在底部而不是头部的…

2023年R1快开门式压力容器操作证模拟考试题库及R1快开门式压力容器操作理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年R1快开门式压力容器操作证模拟考试题库及R1快开门式压力容器操作理论考试试题是由安全生产模拟考试一点通提供&#xff0c;R1快开门式压力容器操作证模拟考试题库是根据R1快开门式压力容器操作最新版教材&#…

【计算机网络】(谢希仁第八版)第三章课后习题答案

第三章 1.数据链路(即逻辑链路)与链路(即物理链路)有何区别? “电路接通了”与”数据链路接通了”的区别何在? 答&#xff1a;数据链路与链路的区别在于数据链路出链路外&#xff0c;还必须有一些必要的规程来控制数据的传输&#xff0c;因此&#xff0c;数据链路比链路多了…

C++零散问题总结

什么是析构函数? return 0

VSCode中的任务什么情况下需要配置多个问题匹配器problemMatcher?多个问题匹配器之间的关系是什么?

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、简介 在 VS Code 中&#xff0c;tasks.json 文件中的 problemMatcher 字段用于定义如何解析任务输出中的问题&#xff08;错误、警告等&#xff09;。 problemMatcher是一个描述问题匹配器的接口&…

node教程(四)Mongodb+mongoose

文章目录 一、mongodb1.简介1.1Mongodb是什么&#xff1f;1.2数据库是什么&#xff1f;1.3数据库的作用1.4数据库管理数据的特点 2.核心概念3.下载安装与启动4.命令行交互4.1数据库命令4.3文档命令 二、Mongoose1.介绍2.作用3.使用流程4.插入文档5.mongoose字段类型 一、mongod…

python自动化运维——模拟键盘鼠标重复性操作Pyautoui

一、程序样式展示 将程序与cmd.xls文件放在同一文件夹&#xff0c;每一步的截图也放在当前文件夹 通过图片在屏幕上面进行比对&#xff0c;找到点击处进行自动化操作 自动化rpa测试 二、核心点 1.Pyautoui模块&#xff1a;主要针对图片进行定位pyautogui.locateCenterOnScree…

STM32循迹小车原理介绍和代码示例

目录 1. 循迹模块介绍 2. 循迹小车原理 3. 循迹小车核心代码 4. 循迹小车解决转弯平滑问题 1. 循迹模块介绍 TCRT5000传感器的红外发射二极管不断发射红外线当发射出的红外线没有被反射回来或被反射回来但强度不够大时红外接收管一直处于关断状态&#xff0c;此时模块的输出…

Django中的FBV和CBV

一、两者的区别 1、在我们日常学习Django中&#xff0c;都是用的FBV&#xff08;function base views&#xff09;方式&#xff0c;就是在视图中用函数处理各种请求。而CBV&#xff08;class base view&#xff09;则是通过类来处理请求。 2、Python是一个面向对象的编程语言…

TensorFlow案例学习:使用 YAMNet 进行迁移学习,对音频进行识别

前言 上一篇文章 TensorFlow案例学习&#xff1a;简单的音频识别 我们简单学习了音频识别。这次我们继续学习如何使用成熟的语音分类模型来进行迁移学习 官方教程&#xff1a; 使用 YAMNet 进行迁移学习&#xff0c;用于环境声音分类 模型下载地址&#xff08;需要科学上网&…