以太坊(以太坊solidity合约)

以太坊(以太坊solidity合约)

  • 1,以太坊
  • 2,开发名词解释
    • (1)钱包
    • (2)Solidity
    • (3)Ether(以太币)
    • (4)Truffle
    • (5)Web3.js
  • 3,叔伯块矿工奖励计算
  • 4,如何查询区块计算gas
  • 5,第一个智能合约
    • (1)语法格式
    • (2)编译
    • (3)部署
    • (4)调用

1,以太坊

以太坊坊的钱包

Minist 是完整版的钱包,下载的是以太坊所有的数据,最终成为一个节点
数据太大,快一天才能下完

Metamask钱包
前面的是全节点同步
此开发人员只想借用钱包完成合约发布测试和部署

基于网页端的钱包,可以不用同步钱包所有信息,但可以实现合约测试和部署

一旦发布,代码开源和不可更改

天然是某些行业的解决方案
捐款、众筹、游戏等

比特币的区块只有交易信息,如下
在这里插入图片描述

https://cn.etherscan.com/blocks
此可以查看到从诞生之初到现在的以太坊的区块

每个区块除了交易信息外还有代码信息

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

智能合约可以发布和部署

一旦部署成功,每个合约会有一个地址,以后可以通过这个地址去调用合约中的函数,或修改合约中的状态

以太坊并没有

Solidity最大特点有地址类型变量,可以完成账户间的转账,而且也只有它对以太坊的分布式账本有读写和调用

前端的都是调用solidity,solidity访问底下的分布式账本

以太坊和其他区块链一样,也会有一个点对点的协议,完成转账和数据相关操作

智能合约只能通过虚拟机编译部署

以前服务器访问返回数据,基于区块链的分布式账本,全球的节点,写入数据操作昂贵,节点同步会消耗资源时间

开发了智能合约后要将合约部署到分布式账本以太坊需要花钱
部署完毕后,谁调用合约也要花钱,每次调用都花钱,若调用免费,会出现恶意写入数据的场景,geth优化分布式账本操作

Remix在线,有网,网速不快第一次打开会

如果网速不好,可以安装本地版,不暂
在这里插入图片描述

本地版门槛较高

专注编程

使用remix环境

练习时可以部署到本地,最后一层可以部署到远程

http://remix.ethereum.org

使用火狐可以打开此开发环境,谷歌浏览器暂时未打开

在中文文档中
https://learnblockchain.cn/docs/solidity/

2,开发名词解释

(1)钱包

想要玩以太坊相关的游戏,需要下载安装metamask在火狐浏览器

https://blog.csdn.net/lsqzedu/article/details/104727957
ETH Wallet
以太坊客户端,其实我们可以把它理解为一个智能合约运行环境,它提供账户管理、挖矿、转账、智能合约的部署和执行等等功能,而EVM是由以太坊客户端提供的
Remix类似钱包,偏向开发,账户部署调用

真正的钱包

插件形式的钱包metamask,转账,发送代币,不具备同步数据功能

在这里插入图片描述

(2)Solidity

一种语法类似JavaScript的高级语言。语法结构与JavaScript更为接近,支持结构体、面向对象 (封装、继承、多态、接口、抽象合约) 等特性,Solidity会被编译为用于EVM的代码。最大的优势在于可以直接与以太坊分布式账本进行交互。
只有此种语言可以完成与以太坊分布式账本的交互
在这里插入图片描述

Solidity被EVM虚拟机解析后,可以操作分布式账本,而在分布式账本里,

通常有两种交易
1,以太坊账号之间的转账交易
2,合约的部署和相应的调用

而java、python等都是间接的访问账本,通过solidity

Dapp (去中心化应用,即Decentralized application)
Dapp是可以让“终端用户间、终端用户和资源间、资源和资源间”在没有中间人的情况下直接进行互动、商定协议或通讯的应用程序

合约一旦部署到以太坊区块中,回合比特币的区块一样,永久存在此区块中不可篡改

一个一个的区块会分到全世界的终端

(3)Ether(以太币)

以太币是在以太坊中使用的货币的名称。以太币被用于支付在EVM(以太坊虚拟机)中进行计算所需的开销. Gas
公有链、联盟链、私有链
公有链:对所有人开放,任何人都可以参与,联盟链:Hyperledger Fabric.支持权限、多区块互联. 私有链:对单独的个人或公司内部开放

区块链权限掌控,联盟链,fabric最有名的,联盟链的开发框架

私有链,用于学习开发使用,使用remix部署本地私有链的操作,我们没有创建私有链,remix已经将所有工作开发好了,我们只需要开发即可

以后学习工作中很少、几乎不可能自己创建公链,而是将合约部署到以太坊公链

(4)Truffle

Truffle是针对基于以太坊的Solidity语言的一套开发框架,对开发,测试,部署实现了非常友好的支持. 让开发者专注智能合约本身

一门语言成熟不,有没有相应开发框架

Solidity,可以在百度搜索truffle框架,加速我们的开发应用

通过truffle生成模板,此处涉及到各种前端技术

可以使用JavaScript、vue、nodejs等间接调用solidity操作分布式账本

(5)Web3.js

Web3.js是以太坊提供的一个Javascript库,提供了一系列与区块链交互的Javascript对象和函数,包括查看网络状态,查看本地账户、查看交易和区块、发送交易、编译/部署智能合约、调用智能合约等 (提供了点对点网络交互的API)

Truffle本身使用JavaScript编写,web3.js

只需要有个钱包,就可以下载分布式账本里的区块信息,每个账本有区块数据,有合约部署调用,又称分布式数据库,只支持solidity的调用,为什么要学习solidity的原因

使用原生语言开发效率不高,维护也不方便

尽量使用truffle框架,
在这里插入图片描述

JavaScript、vue、nodejs等很方便的与Web3.js交互

https://learnblockchain.cn/2018/01/12/first-dapp/

3,叔伯块矿工奖励计算

两个矿工同时挖到一个区块

比特币出现孤块无奖励
以太坊有

https://blog.csdn.net/lsqzedu/article/details/104747369

以太坊的奖励机制和比特币不同

叔伯块的奖励机制,为了提高矿工积极性

叔块无交易手续费奖励的,且最后算的得到的奖励比较少

在这里插入图片描述

当时的固定报酬是5个以太币

在这里插入图片描述

在这里插入图片描述

发起的地址不同但都去往同一个智能合约(后面有文本标志的)

在这里插入图片描述

在这里插入图片描述

此合约完成的是众筹操作,前面的人是向此合约中打钱

上面的交易都打了感叹号,说明交易最后没成功,但尴尬的是交易手续费被扣了

交易失败和矿工无关

设置合约众筹金额
假设100个以太币,超过此则合约交易不再接受

众筹的以太币会原样返回,但扣的手续费就没了

4,如何查询区块计算gas

https://cn.etherscan.com/

https://cn.etherscan.com/blocks

https://www.yitaifang.com/blocks/

以上两个地址显示的区块都是一样的
在这里插入图片描述

高度每增加一个区块高度加1,时间不同

比特币10分钟出一个快

而以太坊9到10秒出一个块

出块时间缩短,处理能力强比比特币

单机block下的数字进入区块查看
在这里插入图片描述
在这里插入图片描述

单机进入65的智能合约交易

可以查看如下
在这里插入图片描述

上方有文本标记的就是智能合约

一旦整个合约部署成功就会生成唯一的哈希地址

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

可以查看合约代码

在这里插入图片描述

https://www.jianshu.com/p/a74afe1b171f

以太坊中的计量单位及相互转换
在这里插入图片描述
在这里插入图片描述

手续费= 本区块消耗的gas(14963259)*当前gas的价值(23.86)得到单位为以太坊
所有区块获得的手续费都独属于矿工

叔伯块也是有奖励的,就是双花、交叉时的出现的平行块

5,第一个智能合约

在这里插入图片描述

合约第一个字母大写

(1)语法格式

这一张主要是合约部署整个流程

https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#subcurrency

在这里插入图片描述
在这里插入图片描述

勾选后,一旦编写程序,合约会自动编译

(2)编译

在这里插入图片描述

在这里插入图片描述

(3)部署

编译成功后就是合约部署,正常部署是本地合约部署到以太坊分布式账本

但此部署需要消耗以太币

Remix好处在于本地构建私有链,编译测试后再部署到远程就节省时间和经历

在这里插入图片描述

在这里插入图片描述

合约的部署和调用都会消耗ges,geth本身也是以太坊的一个货币单位,和以太坊换算

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

真实场景合约部署成功后,会有64位的地址,在下个视频可以根据这个地址调用其变量和其函数来进行智能合约的执行

上面的from就是部署合约的用户地址

在这里插入图片描述

所消耗的gas也能在上方看到

和比特币不同的是,合约的部署也是一笔交易,只要有交易就会生成64位的hash
在这里插入图片描述

(4)调用

一旦部署成功,使用另一个账户调用此合约会花钱

在这里插入图片描述

在这里插入图片描述

调用合约花费要少,水很深,调用不同的函数,函数的操作级别不同花费也是不同的

在这里插入图片描述
在这里插入图片描述

发现第3个用户,点击get函数的没有消耗以太坊gas,原因是其没有向变量写入东西,而是拿东西,分布式账本写东西代价很高,但读没问题

在这里插入图片描述

Remix开发工具的使用,智能合约编译、部署、调用

以太坊开发概念就好理解了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 7.x 系列【23】哨兵模式

有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 工作原理2.1 监控2.2 标记下线2.3 哨兵领袖2.4 新的主节点2.5 通知更新 3. …

请求响应(后端必备)

一、请求 1.简单参数 原始方式: 在原始的web程序中,获取请求参数,需要通过HttpServletRequest对象手动获取 RequestMapping("/simpleParam")public String simpleParam(HttpServletRequest request){String name request.getP…

什么叫价内期权?直接带你了解期权价内期权怎么使用?!

今天带你了解什么叫价内期权?直接带你了解期权价内期权怎么使用?!价内期权是具有内在价值的期权。期权持有人行权时,对看涨期权而言,行权价格低于标的证券结算价格;对看跌期权而言,标的证券结算…

js 请求blob:https:// 图片

方式1 def get_file_content_chrome(driver, uri):result driver.execute_async_script("""var uri arguments[0];var callback arguments[1];var toBase64 function(buffer){for(var r,nnew Uint8Array(buffer),tn.length,anew Uint8Array(4*Math.ceil(t/…

前端Vue组件化实践:自定义加载组件的探索与应用

在前端开发领域,随着业务逻辑复杂度的提升和系统规模的不断扩大,传统的开发方式逐渐暴露出效率低下、维护困难等问题。为了解决这些挑战,组件化开发作为一种高效、灵活的开发模式,受到了越来越多开发者的青睐。本文将结合实践&…

Java基础及进阶

JAVA特性 基础语法 一、Java程序的命令行工具 二、final、finally、finalize 三、继承 class 父类 { //代码 }class 子类 extends 父类 { //代码 }四、Vector、ArrayList、LinkedList 五、原始数据类型和包装类 六、接口和抽象类 JAVA进阶 Java引用队列 Object counter ne…

PostgreSQL行级安全策略探究

前言 最近和朋友讨论oracle行级安全策略(VPD)时,查看了下官方文档,看起来VPD的原理是针对应用了Oracle行级安全策略的表、视图或同义词发出的 SQL 语句动态添加where子句。通俗理解就是将行级安全策略动态添加为where 条件。那么PG中的行级安全策略是怎…

使用UDP通信接收与发送Mavlink2.0协议心跳包完整示例

1.克隆mavlink源码 https://github.com/mavlink/mavlink.git 2.进入mavlink目录,安装依赖 python3 -m pip install -r pymavlink/requirements.txt 3.生成Mavlink的C头文件 mavlink % python3 -m pymavlink.tools.mavgen --lang=C --wire-protocol=2.0 --output=generated…

1-5岁幼儿胼胝体的表面形态测量

摘要 胼胝体(CC)是大脑中的一个大型白质纤维束,它参与各种认知、感觉和运动过程。尽管CC与多种发育和精神疾病有关,但关于这一结构的正常发育(特别是在幼儿阶段)还有很多待解开的谜团。虽然早期文献中报道了性别二态性,但这些研究的观察结果…

【Linux网络】select{理解认识select/select与多线程多进程/认识select函数/使用select开发并发echo服务器}

文章目录 0.理解/认识回顾回调函数select/pollread与直接使用 read 的效率差异 1.认识selectselect/多线程(Multi-threading)/多进程(Multi-processing)select函数socket就绪条件select的特点总结 2.select下echo服务器封装套接字…

C++ 类和对象 赋值运算符重载

前言: 在上文我们知道数据类型分为自定义类型和内置类型,当我想用内置类型比较大小是非常容易的但是在C中成员变量都是在类(自定义类型)里面的,那我想给类比较大小那该怎么办呢?这时候运算符重载就出现了 一 运算符重载概念&…

安全防御:防火墙基本模块

目录 一、接口 1.1 物理接口 1.2 虚拟接口 二、区域 三、模式 3.1 路由模式 3.2 透明模式 3.3 旁路检测模式 3.4 混合模式 四、安全策略 五、防火墙的状态检测和会话表技术 一、接口 1.1 物理接口 三层口 --- 可以配置IP地址的接口 二层口: 普通二层…

车载终端_RTK定位|4路摄像头|驾驶辅助系统ADAS定制方案

现代车辆管理行业的发展趋势逐渐向智能化和高效化方向发展,车载终端成为关键的工具之一。在这个背景下,一款特别为车队管理行业设计的车载终端应运而生。该车载终端采用8寸多点触控电容屏,搭载联发科四核处理器,主频2.0GHz&#x…

如何安装node.js

Node.js Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境。 主要特点和优势: 非阻塞 I/O 和事件驱动:能够高效处理大量并发连接,非常适合构建高并发的网络应用,如 Web 服务器、实时聊天应用等。 例如,在…

网络安全——防御(防火墙)带宽以及双机热备实验

12,对现有网络进行改造升级,将当个防火墙组网改成双机热备的组网形式,做负载分担模式,游客区和DMZ区走FW3,生产区和办公区的流量走FW1 13,办公区上网用户限制流量不超过100M,其中销售部人员在其…

排序相关算法--3.选择排序

之前涉及的堆排序就是选择排序的一种,先进行选择。 基本选择排序: 最简单,也是最没用的排序算法,时间复杂度高并且还是不稳定的排序方法,项目中很少会用。 过程: 在一个长度为 N 的无序数组中,…

智慧公厕系统助力城市卫生管理

在当今快速发展的城市环境中,城市卫生管理面临着诸多挑战。其中,公共厕所的管理一直是一个重要但又常被忽视的环节。然而,随着科技的不断进步,智慧公厕系统的出现为城市卫生管理带来了全新的解决方案,成为提升城市品质…

OrangePi AIpro 浅上手

OrangePi AIpro 浅上手 OrangePi AIpro 介绍开发版介绍硬件规格顶层视图和底层视图接口详情图 玩转 OrangePi AIPro烧录镜像串口调试连接 WiFissh 连接配置下载源 使用感受优点:缺点或需注意的点: OrangePi AIpro 介绍 开发版介绍 OrangePi AIpro是香橙…

【大语言模型】私有化搭建-企业知识库-知识问答系统

下面是我关于大语言模型学习的一点记录 目录 人工智能学习路线 MaxKB 系统(基于大语言模型的知识问答系统) 部署开源大语言模型LLM 1.CPU模式(没有好的GPU,算力和效果较差) 2.GPU模式(需要有NVIDIA显卡支持) Ollama网络配置 Ollama前…