智能合约开发基础知识:最小信任机制、智能合约、EVM

 

 苏泽

大家好 这里是苏泽 一个钟爱区块链技术的后端开发者

本篇专栏 ←持续记录本人自学两年走过无数弯路的智能合约学习笔记和经验总结 如果喜欢拜托三连支持~


专栏的前面几篇详细了介绍了区块链的核心基础知识 有兴趣学习的小伙伴可以看看http://t.csdnimg.cn/fCD5E关于区块链的基本组成、加密原理、共识机制都用最通俗易懂的方式讲解了 希望能够帮助大家学习

下面是本文的正片

智能合约

简而言之 合约 也就是“约定” 既然谈到了 约定 很显然就想到了“信任”  我们不可能跟一个言而无信的人进行约定 人是如此 计算机也是如此 区块链更是如此

提到了信任 就不得不提前  最小信任机制

最小信任机制

这里有以太坊对最小信任机制的官方描述 可以在油管子里看看视频 当然了要是进不去或者嫌麻烦 这里用最简单的方式让你理解

在一个正常运行的社会中,人与人之间拥有足够的信任,可以支撑有效的社会和经济活动。然而,社会的信任水平不一定与事实划等号。一旦人们发现自己对社会运行机制的认知与事实存在偏差,信任就会出现裂痕,并且不可避免地导致更大的分歧,人们最终也会要求彻底改变整个运行机制。

当前社会正处于这样一场危机中,用户和机构之间的实际关系与用户认知存在偏差,比如人们对合约中法律责任的认知存在偏差,以及机构对外声称的情况与实际情况存在偏差。

这是什么意思呢  最简单我们举个现实的例子 那就是银行 啊不对 是老王办的某家投资公司 老王是个奸商,他对外宣称“把钱投给我 我让你躺着赚钱”  但事实上 他拿着客户给他的钱去巴厘岛度假了  只留下一堆包装工厂在原地风中萧瑟    

上述的例子就很直白的表述出用户和机构之间的实际关系与用户认知存在偏差 那这样的事情怎么避免呢?

很简单。由于代码执行和验证不依赖对陌生人的信任或不可控的变量,因此代码可以严丝合缝地执行。区块链采用加密技术实现信任最小化, 简单来说 就是让代码站在 用户与用户之间、 或是用户与机构 、机构与机构之间。这样就能很好的实现最小信任机制

最小信任机制的关键是将信任分散到多个参与者之间,以减少对单一实体的依赖。 简单来说就是找一堆人盯着老王 不让他卷你的钱跑路 以此提高你和老王之间 交易的可靠性  而这里的“很多”则恰好体现了 分布式的应用

好了,既然这个最小信任机制那么高级 也那么有价值 他应该靠什么实现呢?

很好 那就是智能合约

智能合约

智能合约(Smart Contract)是一种基于区块链技术的自动化合约。它是一段程序代码,可以在区块链上执行、验证和执行合约的条款和条件。

智能合约的执行过程:

  1. 创建合约:首先,有一个人(创建者)使用一笔特殊的交易(称为合约创建交易)来部署合约。这笔交易包含了合约的字节码(即合约的编译后代码)和其他必要参数。在这笔交易中,创建者向合约地址发送以太币(ETH),作为合约的初始资金。

  2. 合约创建交易:合约创建交易被广播到整个以太坊网络,并被矿工包含在一个区块中。

  3. 区块链确认:矿工通过执行交易中的合约字节码创建新的区块。这是合约在以太坊网络中的创建过程。

  4. 触发合约:一旦合约被创建,任何人都可以通过向合约地址发送交易来调用合约。这笔交易包含了调用合约的数据,即要执行的合约函数及其参数。

  5. 合约执行:当这笔交易被矿工打包并写入区块链后,以太坊网络中的每个节点都会执行合约的字节码,模拟合约的执行过程。这确保所有节点达成相同结果。

作为合约 其实本质上就是代码 既然是代码 他就有许多种编程语言可以选择

  • Solidity:目前 DeFi TVL (DeFi 锁定的通证价值)占比最大的语言。是一种高级语言,类似于 JavaScript。
  • Vyper:目前 DeFi TVL 排名第二的语言。也是一种高级语言,类似于 Python。
  • Huff:一种类似于汇编的底层语言。
  • Yul:一种类似于汇编的底层语言,内置于 Solidity

你可以选择自己喜欢的  但如果你是面向市场 建议还是选solidity(同时也是本篇专栏的重点)根据 DefiLlama 的数据,截至目前,在 DeFi 领域,Solidity 智能合约获得了 87% 的 TVL 

因为Solidity 是一种面向对象的编程语言,用于在以太坊和其他区块链上来编写智能合约。 Solidity 深受Java、 C++、Python 和 JavaScript 的影响,并且专为 EVM (待会会详细说这个)而设计。

  

按照上面的思路 我们开心的学完solidity 就能愉快的编写合约啦  但是 我们需要什么来执行?

EVM 

EVM是一个计算引擎,有助于智能合约的部署和操作。没有EVM,就不可能在以太坊协议上执行软件程序。因此,EVM是以太坊核心架构的关键部分。

  

简而言之就是执行合约代码的地方

EVM是图灵完备的,因为它可以用于执行各种复杂度的计算。这就是以太坊与比特币的区别,因为比特币是图灵不完整的,限制了其功能。

比特币的主要功能是“分布式账本”,它规定了价值转移的规则。除了处理价值转移,以太坊(通过EVM)还支持智能合约的部署。因此,以太坊被描述为“分布式状态机”。

“State”(状态)是指在任何时间点有关系统的信息。在以太坊中,状态指的是特定时刻存在的地址、账户余额和智能合约代码。每个事务都会导致以太坊的状态发生变化(状态转换),这种变化会反映在整个网络中。

到了这里我们发现我们可以跟在我们自己部署的区块链上面执行代码了 但这场游戏显得不那么有趣  因为这是一场单机游戏  我们发现如果只到了这里 我们仅仅只是换了个编程语言 并没有做什么实际的事情

所以就有了预言机

Chainlink预言机

区块链为什么需要预言机?

区块链上的智能合约和去中心化应用(Dapp)对外界数据拥有交互需求。也就是说 区块链需要跟现实世界进行交互 就必须经过 预言机的处理

预言机就是一种单向的数字代理,可以查找和验证真实世界的数据,并以加密的方式将信息提交给智能合约。预言机就好比区块链与现实世界的桥梁。

  

预言机的原理

  1. 数据获取过程:预言机的数据获取过程通常包括以下步骤:

    • 智能合约发起数据请求:智能合约向预言机发送数据请求,指定需要获取的数据类型和参数。
    • 预言机获取数据:预言机根据智能合约的请求,从外部数据源中获取相应的数据。
    • 数据验证和处理:预言机对获取的数据进行验证和处理,确保数据的准确性和完整性。
    • 数据提交到区块链:预言机将处理后的数据通过提交事务/交易的方式,将数据提交到区块链上,供智能合约使用。

那Chainlink是什么?

Chainlink 是一个较为完美的去中心化预言机项目 下一篇文介绍预言机的 详细介绍及其入门

http://t.csdnimg.cn/bP87E

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

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

相关文章

C++模版进阶

文章目录 C模版进阶1、非类型模版参数2、模版的特化2.1、概念2.2、函数模版特化2.3、类模版特化2.3.1、类模版全特化2.3.1、类模版偏特化 2.4、类模版特化示例 3、模版的分离编译3.1、 什么是分离编译3.2、模版的分离编译 4、模版总结 C模版进阶 1、非类型模版参数 模板参数分…

IO Watch:用 Arduino UNO 制造的可编程手表

MAKER:mblaz/译:趣无尽 Cherry(转载请注明出处) 关于手表的项目,之前我们已经介绍过一款《Arduino + 3D 打印 DIY 电子手表》。本期的项目同样的一款基于 Arduino UNO 的可编程的手表,相比之下制造门槛更高一些。同时它更成熟、实用,外形也很有设计感,非常的漂亮! 这…

TCP相关特性

协议段格式 • 源/⽬的端⼝号:表⽰数据是从哪个进程来,到哪个进程去; • 32位序号/32位确认号:后⾯详细讲; • 4位TCP报头⻓度:表⽰该TCP头部有多少个32位bit(有多少个4字节);所以TCP头部最⼤⻓度是15*460 • 6位标志位: ◦ URG:紧急指针是否有效 ◦ ACK:确认号是否有效…

如何使用ROS和easymqos快速搭建一辆语音控制导航的机器人

之前做的机器人小车基本都属于电脑或手机控制操作。目前,使用语音控制机器人小车运动,让机器人导航去指定地点,已经成为热门,并且语音识别技术已经有落地方案,可满足生活中的基本需要。有些语音芯片通过高算力处理器运…

【HBase入门与实战】一文搞懂HBase!

HBase入门与实战 目录 HBase入门与实战内容要点一、引入HBase二、了解NoSQL的概念三、NoSQL、BI、大数据的关系四、HBase概述五、HBase应用场景 内容要点 HBase的引入、定义和特点NoSQL数据库的概念和与关系型数据库的区别HBase的物理架构和逻辑架构HBase Shell的基本命令使用…

PHP异世界云商系统开源源码

系统更新与修复列表 1. 基于彩虹的二次开发 - 对彩虹系统进行了二次开发,增强了系统的功能和性能。2. 新增自定义输入框提示内容(支持批量修改) - 用户可以自定义输入框的提示内容,并支持批量修改,提升用户体验。3. 新…

劲仔食品三年倍增,抢先打响鹌鹑蛋“健康”属性品牌之争?

如果说,进入2024年后,在股价继续陷入回调状态的食品板块中有个股走势表现相对亮眼,那么劲仔食品必是其中之一。 从去年发布2023年三季度业绩公告以来,其强劲的业绩表现就带动了股价走出小趋势。2023年10月23日至今2024年3月13日收…

C#构建类库

类库程序集能将类型组合成易于部署的单元(DLL文件),为了使编写的代码能够跨多个项目重用,应该将他们放在类库程序集中。 一、创建类库 在C#中,构建类库是指创建一个包含多个类的项目,这些类可以被其他应用…

RocketMQ 面试题及答案整理,最新面试题

RocketMQ的消息存储机制是如何设计的? RocketMQ消息存储机制的设计原理: 1、CommitLog文件: 所有的消息都存储在一个连续的CommitLog文件中,保证了消息的顺序写入,提高写入性能。 2、消费队列: 为每个主…

Task-balanced distillation for object detection用于

Task-balanced distillation for object detection用于目标检测的任务平衡蒸馏 摘要 主流的目标检测器通常由分类和回归两个子任务组成,由两个并行头部实现。这种经典的设计范式不可避免的导致分类得分和定位质量(IOU)之间的空间分布不一致…

漫途桥梁结构安全监测方案,护航桥梁安全!

桥梁作为城市生命线的重要组成部分,承载着城市交通、物流输送、应急救援等重要职能。然而,随着我国社会经济的飞速发展,桥梁所承载的交通流量逐年增长,其安全性所面临的挑战亦日益严峻。例如恶劣的外部环境、沉重的荷载以及长期使…

python爬虫实战——抖音

目录 1、分析主页作品列表标签结构 2、进入作品页前 判断作品是视频作品还是图文作品 3、进入视频作品页面,获取视频 4、进入图文作品页面,获取图片 5、完整参考代码 6、获取全部作品的一种方法 本文主要使用 selenium.webdriver(Firef…

HarmonyOS NEXT应用开发—自定义视图实现Tab效果

介绍 本示例介绍使用Text、List等组件,添加点击事件onclick,动画,animationTo实现自定义Tab效果。 效果预览图 使用说明 点击页签进行切换,选中态页签字体放大加粗,颜色由灰变黑,起到强调作用,同时&…

揭示数据在内存中存储的秘密!

** ** 悟已往之不谏,知来者犹可追 ** ** 创作不易,宝子们!如果这篇文章对你们有帮助的话,别忘了给个免费的赞哟~ 整数在内存中的存储 整数的表达方式有三种:原码、反码、补码。 三种表示方法均有符号位和数值位两部分…

Oracle数据库:使用 bash脚本 + 定时任务 自动备份数据

Oracle数据库:使用 bash脚本 定时任务 自动备份数据 1、前言2、为什么需要自动化备份?3、编写备份脚本4、备份脚本授权5、添加定时任务6、重启 crond / 检查 crond 服务状态7、备份文件检查 💖The Begin💖点点关注,收…

torch.backends.cudnn.benchmark 作用

相关参数 torch.backends.cudnn.enabled torch.backends.cudnn.benchmark torch.backends.cudnn.deterministictorch.backends.cudnn.benchmark True:将会让程序在开始时花费一点额外时间,为整个网络的每个卷积层搜索最适合它的卷积实现算法&#xff0c…

力扣59. 螺旋矩阵 II

思路:此题思路就是绕圈遍历,全靠条件处理技巧,重点要清楚的就是循环不变量:左闭右开(即拐弯处的一个数,留给第二行处理) 以下是代码随想录的作者的一张图片,每次for循环,…

Docker容器化技术(使用Docker搭建论坛)

第一步:删除容器镜像文件 [rootlocalhost ~]# docker rm -f docker ps -aq b09ee6438986 e0fe8ebf3ba1第二步:使用docker拉取数据库 [rootlocalhost ~]# docker run -d --name db mysql:5.7 02a4e5bfffdc81cb6403985fe4cd6acb0c5fab0b19edf9f5b8274783…

深入浅出计算机网络 day.2 概论⑥ 计算机网络体系结构

上帝疯狂杜撰世界悲情的命题 将凉薄和荒芜尽写 —— 24.3.13 内容概述 1.常见的三种计算机网络体系结构 2.计算机网路体系结构分层的必要性 3.计算机网络体系结构分层思想举例 4.计算机网络体系结构中的专用术语 一、常见的三种计算机网络体系结构 1.OSI参考模型 …

基于ElasticSearch存储海量AIS数据:时空立方体索引篇

文章目录 引言I 时间维切分II 空间范围切分引言 索引结构制约着查询请求的类型和处理方式,索引整体架构制约着查询请求的处理效率。随着时间推移,AIS数据在空间分布上具备局部聚集性,如 果简单地将所有AIS数据插入一个索引结构,随着数据量增长,索引的更新效率、查询效率及…