2023 年 6 大智能合约语言

news2024/9/29 17:57:40

如果你想成为一名 Web3 开发人员,你需要知道如何编写智能合约,智能合约是所有 Web3 应用程序的支柱。

简而言之,智能合约是在区块链网络上部署和执行的计算机程序,提供确定性保证,使多方能够达成一致的、防篡改的结果。

从金融应用程序到游戏,今天人们正在构建大量新颖的智能合约用例,为用户提供更公平地访问金融原语、更强大、信任最小化(trust-minimized)的担保以及对数字资产的所有权。

最流行的智能合约语言

11-1.png

每种智能合约编程语言支持的 TVL 百分比明细。资料来源:DefiLlama。

Solidity

Solidity 是以太坊虚拟机 (EVM) 最流行的区块链编程语言,也广泛用于一系列与 EVM 兼容的区块链。

Solidity 的优点

Solidity 是一种高级的图灵完备语言,这意味着开发人员可以更快地编写代码,因为许多低级问题都被抽象掉了。 Solidity 语法也类似于 Javascript,这是世界上最流行的编程语言之一,使其成为开发人员过渡到 Web3 的一个很好的起点。

对于新的智能合约开发人员来说,Solidity 的另一个好处是它带有内置的保护措施,可以防止代价高昂的错误。作为 Web3 中使用最广泛的语言,Solidity 开发人员可以访问更多的库和工具、更好的文档以及论坛中增加的开发人员支持。

Solidity 的缺点

对于没有太多面向对象编程经验的开发人员来说,Solidity 的语法有时会让人感到困惑,而且它的函数重载特性在代码可读性方面往往是不利的。还有一些开发人员可能不习惯的 Solidity 开发习惯,例如 Solidity 原生数据类型没有小数。

对于高级 Web3 开发人员来说,与低级语言相比,使用 Solidity 编写代码通常会导致更高的 gas 成本。

Vyper

Vyper 是仅次于 Solidity 的兼容 EVM 的 Web3 编程语言。它是一种面向合约的类 Python 的编程语言,具有强类型、小型编译器代码和高效的字节码生成的特点。

Vyper 的优点

Vyper 代码看起来和感觉上都像 Python — 使其成为 Python 开发人员快速开启 Web3 开发之旅的最佳起点之一。

Vyper 还具有易懂的语言和编译器实现,这有助于提高代码的可读性和可审计性,使开发人员更容易开发出安全的智能合约。作为使用第二多的智能合约编程语言,Vyper 拥有许多与 Solidity 相同的工具和资源。

Vyper 的缺点

Vyper 仍然缺乏 Solidity 所拥有的广泛社区支持,并且 Vyper 目前还没有 Solidity 原生工具。

Vyper 还缺少修饰符、类继承和递归调用,并且编程语言不是图灵完备的。许多这些功能的缺失是因为要提升合约安全性和可审计性,但开发人员需要额外的工作来解决这些限制。作为一种较新的语言,Vyper 仍在开发中,这也意味着功能较少。

其他语言

Solidity 和 Vyper 是当今智能合约开发的两大巨头,但也存在其他的新兴区块链编码语言。

Yul

Yul 是支持 EVM 的以太坊中间层语言。

Yul 旨在直接转换为字节码,擅长为更高级的 Web3 开发人员优化智能合约和降低 gas 成本。虽然 Yul 是一个很棒的学习资源,但它最适合编写特定的、高性能的代码。作为一种独立的编码语言,Yul 目前缺乏工具和生态系统支持。

Cairo

Cairo 是一种图灵完备的智能合约编程语言,旨在为一般的运算创建 STARK 可证明的程序。

Cairo 主要用于 StarkNet —— 一个建立在以太坊之上的第 2 层区块链,StarkNet 的核心特征是程序逻辑被转换为 STARK 证明,提供在以太坊区块链上结算的可验证计算。虽然 Cairo 是一种用于构建快速且可扩展的智能合约的强大语言,但它的支持仅限于 StarkNet/StarkEx 生态系统之内。

Rust

Rust 是一种流行的智能合约编程语言,适用于许多非 EVM 区块链,例如 Polkadot 和 Solana,并且与此处列出的许多其他语言不同,它不仅适用于 Web3 开发。

Rust 编程语言本身高效、安全,并减少了不必要的代码膨胀(bloat),Rust 的数据结构非常紧凑,非常适合区块链空间限制。也就是说,许多区块链对 Rust 还没有成熟的工具或支持。

Move

Move 是一种基于 Rust 的智能合约编程语言,最初是为 Meta 的 Diem 区块链开发的。

Move 引入了一个建立在三个核心前提之上的新系统:第一位的资源(first-class resources)、更高的安全性和升级的可验证性。最值得注意的是,Move 的编程语言在类型层面集成了资源,而不是以中立方式支持任何单一类型的通证(即 ETH 或 BTC)集成。今天,Move 主要在 Aptos 和 Sui 区块链中使用,在此生态之外并没有大量支持。

如何选择最佳的智能合约编程语言

不同的区块链支持不同的语言,这意味着没有一种语言适合所有的场景。如果你已经熟悉一种编码语言,下面的图表将有助于你先选择的一个智能合约语言的区块链。

11-2.png

对于希望进入 Web3 而不知道他们想在哪个区块链上构建或他们想学习哪种语言的开发人员来说,Solidity 和 Vyper 是探索智能合约如何工作的最佳语言。然后你可以从那里分支出来。

请记住,Web3 开发空间在不断增长和发展,而 Web3 开发人员只占整个开发人员群体的一小部分。

11-3.png

据估计,所有软件开发人员中只有不到 2% 是智能合约开发人员。

虽然语言的流行程度可能会起起落落,但对智能合约及其跨区块链工作方式的深入理解将始终为你提供帮助。最重要的是先进入并开始开发。

欢迎关注 Chainlink 预言机并且私信加入开发者社区,有大量关于智能合约的学习资料以及关于区块链的话题!

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

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

相关文章

CSDN时隔一年,我又回来了还愿

CSDN时隔一年,我又回来了还愿 去年的今天我申请到了Jetbrains学生试用,前两天刚买了JetBrains。 特别感谢Jetbrains和Jetbrains的客服小姐姐。 情况说明: 由于本人读非全日制大学,每周也同全日制一样上五天学放二两天。首先非全日制已经不符…

vue - vue是mvvm模型吗?

先说明一下什么是标准的mvvm模型: M: Model;既是数据,主要负责业务数据相关;V: View;即是视图,展示给用户看的页面,细分下来就是htmlcss层;VM: ViewModel;是连接界面View…

ZOJ-搜索专题

1002 题意 思路 深搜&#xff0c;每个格子都搜一遍。技巧dfs(cnt,ans)dfs(第几个格子&#xff0c;答案)&#xff1b; 代码 #include <iostream>using namespace std;int n,i,j,ans; char s[5][5];int c_put(int n,int m) {for (i n-1;i > 0;i --) {if (s[i][m] …

怎么解决SPA首屏加载速度慢?

首屏加载 首屏时间&#xff08;First Contentful Paint&#xff09;&#xff0c;指的是浏览器从响应用户输入网址地址&#xff0c;到首屏内容渲染完成的时间&#xff0c;此时整个网页不一定要全部渲染完成&#xff0c;但需要展示当前视窗需要的内容 首屏加载可以说是用户体验…

LeetCode第2577题-在网格图中访问一个格子的最少时间-python实现-图解思路与手撕代码

LeetCode第2577题-在网格图中访问一个格子的最少时间-python实现-图解思路与手撕代码 文章目录一、题目描述二、解题思路与代码实现1.解题思路2.代码实现总结一、题目描述 二、解题思路与代码实现 1.解题思路 这道题求最短距离&#xff0c;首先检查起始点0,0的右边0,1和下边1…

Linux配置mysql主从复制

Linux配置mysql主从复制 systemctl restart mysqld 重启mysql服务 Mysql主从复制 在linux里面部署mysql 主库Master 192.168.162.138 contos 7 从库Slave 192.168.162.137 contos 7测试 log-binmysql-bin町[必须]启用二进制日志 第三步:登录Mysql数据库&#xff0c;执…

oracle 19c 创建物化视图并测试logminer进行日志挖掘

1、创建物化视图 alter session set containerpdb; grant create materialized view to scott; create materialized view 物化视图名 -- 1. 创建物化视图 build [immediate | deferred] -- 2. 创建方式&#xff0c;默认 immediate refre…

LeetCode-2373. 矩阵中的局部最大值【矩阵,数组】

LeetCode-2373. 矩阵中的局部最大值【矩阵&#xff0c;数组】题目描述&#xff1a;解题思路一&#xff1a;原地修改。首先将每个3*3的矩阵的最大值存放在左上角的点&#xff0c;然后修改给的grid矩阵的大小。解题思路二&#xff1a;暴力&#xff0c;申请一个数组解题思路三&…

想学Java开发,有什么方式可以选择?

想学习软件开发Java高级编程语言的小伙伴看过来&#xff0c;这里有多年Java职业教育经验总结以及学习技巧分享&#xff0c;不容错过的精彩内容&#xff01; 一年之计在于春&#xff0c;阳春三月是学习的好时光。万物复苏&#xff0c;一切都可以重新开始&#xff0c;如果你也在考…

一些开源的,好看的前端组件/样式库

以下是一些受欢迎的开源 CSS 样式库&#xff1a;Bootstrap&#xff1a;https://getbootstrap.com/Materialize CSS&#xff1a;https://materializecss.com/Bulma&#xff1a;https://bulma.io/Foundation&#xff1a;https://foundation.zurb.com/Semantic UI&#xff1a;http…

智慧燃气管理系统

在数字经济时代&#xff0c;迫切需要通过数字化建设智能天然气&#xff0c;提高天然气的基本安全水平&#xff0c;提高企业的智能管理水平。这是人们可以看到、触摸和使用的智能应用&#xff0c;也是为智能城市奠定良好基础的必修课。智能燃气是以GIS为基础&#xff0c;采用物联…

商简智能计划与排程SPS在纺织行业中的应用

企业背景 某织造、染色及后整理一体化工艺的纺织面料企业&#xff0c;主要从事户外功能运动服装、内衣、泳衣、汽车内饰等面料的研发和销售&#xff0c;年产值在20亿左右&#xff0c;是迪卡侬运动面料最优质供应商之一。 纺织行业特点 印染具有典型的流程行业特性&#xff0c…

从功能测试到自动化测试,我只花了67天,薪资翻倍

在这个吃技术的IT行业来说&#xff0c;我刚入行的时候每天做的也是最基础的工作&#xff0c;但是随着时间的消磨&#xff0c;我产生了对自我和岗位价值和意义的困惑。 随着移动互联网的发展&#xff0c;从业人员能力的整体进步&#xff0c;软件测试需要具备的能力要求越来越高…

Databend 开源周报 第 82 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.com 。Whats New探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。Features & Improvements :…

vue源码分析-基础的数据代理检测

简单回顾一下这个系列的前两节&#xff0c;前两节花了大量的篇幅介绍了Vue的选项合并&#xff0c;选项合并是Vue实例初始化的开始&#xff0c;Vue为开发者提供了丰富的选项配置&#xff0c;而每个选项都严格规定了合并的策略。然而这只是初始化中的第一步&#xff0c;这一节我们…

【计算机组成原理 - 第一章】计算机系统概论(完结)

本章参考王道考研相关课程&#xff1a; 【2021版】1.2.1_计算机硬件的基本组成_哔哩哔哩_bilibili 【2021版】1.2.2_认识各个硬件部件_哔哩哔哩_bilibili 【2021版】1.2.3_计算机系统的层次结构_哔哩哔哩_bilibili 【2021版】1.3_计算机的性能指标_哔哩哔哩_bilibili 目录 一、…

绘制带有角度的CAD图形

这个CAD图形用到的命令有CAD直线、CAD圆、CAD圆弧、CAD偏移和CAD旋转等多个CAD命令相结合才绘制出来。 目标对象 操作步骤 1.先使用直线命令画相交于A点的两条线段&#xff0c;然后A点为圆心画半径12和半径15的圆 2.然后以B点为圆心画半径2的圆&#xff0c;使用复制命令指定圆…

Maven的基本使用

1.Maven的基本介绍2.Maven中仓库的概念3.Maven中坐标的概念坐标示例如下&#xff1a;<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope>//这个是范围 &l…

elasticsearch 8 修改分词器并数据迁移

1. 安装中文索引 下载地址&#xff1a;https://github.com/medcl/elasticsearch-analysis-ik/releases 注意&#xff1a;版本要和ES版本对应 解压后放入plugins文件中 然后重启服务&#xff1a;docker-compose restart elasticsearch&#xff0c;大概需要1分钟 2. 数据迁移…

【Spark分布式内存计算框架——Spark Streaming】9. 获取偏移量 应用案例:百度搜索风云榜(上)

4.4 获取偏移量 当SparkStreaming集成Kafka时&#xff0c;无论是Old Consumer API中Direct方式还是New Consumer API方式获取的数据&#xff0c;每批次的数据封装在KafkaRDD中&#xff0c;其中包含每条数据的元数据信息。 文档&#xff1a;http://spark.apache.org/docs/2.4.…