当前位置: 首页 > news >正文

2023 年 6 大智能合约语言

如果你想成为一名 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 预言机并且私信加入开发者社区,有大量关于智能合约的学习资料以及关于区块链的话题!

相关文章:

2023 年 6 大智能合约语言

如果你想成为一名 Web3 开发人员,你需要知道如何编写智能合约,智能合约是所有 Web3 应用程序的支柱。 简而言之,智能合约是在区块链网络上部署和执行的计算机程序,提供确定性保证,使多方能够达成一致的、防篡改的结果…...

家用洗地机哪款最好用?全球洗地机十大品牌

近年来,智能家用电器洗地机已经融入到我们生活中了,成为最受欢迎的清洁工具了,家用洗地机吸拖洗一体,不用先扫后拖那么麻烦,只需轻轻一推,就能把扫地、拖地、擦地的活全干了,操作简单&#xff0…...

【2223sW2】LOG1

写在前面 好好学习,走出宿舍,走向毕设! 一些心路历程记录,很少有代码出现 因为鬼知道哪条代码到时候变成毕设的一部分了咧,还是不要给自己的查重挖坑罢了 23.2.27 文件批量重命名 为了给学姐先整出来一批训练数据&…...

Spring Cloud配置application.yml与bootstrap.yml区别及多profile配置 | Spring Cloud 6

一、前言 Spring Cloud 构建于 Spring Boot 之上,在 Spring Boot 中有两种上下文,一种是 bootstrap,另外一种是 application。 1.1 两者区别 bootstrap.yml/bootstrap.properties 和 application.yml/application.yml 都可以用来配置参数。…...

springboot通过aop实现全局日志(是否自定义注解都可以)

内容参考自以下两个链接1、springboot中使用AOP切面完成全局日志_aop全局日志_邹飞鸣的博客-CSDN博客使用AOP记录日志_aop日志_trusause的博客-CSDN博客第一个链接思路很清晰,讲的也很详细,第二个链接讲了自定义注解为了便于自己理解做了以下整理目录 1.aspectj基本概念 2.添加…...

k8s面试题-进阶

1、简述etcd及其特点etcd是CoreOS团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于Go语言实现。特点&…...

预览版Edge申请微软new Bing失败解决方案

文章目录1.首先需要配置科学上网2.下载预览版Edge浏览器卡它bug!卡它bug!卡它bug!没有申请上ChatGPT的朋友们,试试new Bing吧,更新更强大,关于申请方式,网上已经有很多帖子了,其中一…...

Spring中Bean生命周期及循环依赖

spring中所说的bean对象 与 我们自己new的对象(原始对象)是不同的;bean对象是指spring框架创建管理的我们的对象生命周期即:何时生,何时死1.实例化 Instantiation:spring通过反射机制以及工厂创建出来的原始对象;2.属性…...

【3.1】MySQL锁、动态规划、Redis缓存,过期删除与淘汰策略

5.4 MySQL死锁了,怎么办? RR隔离级别下,会存在幻读的问题,InnoDB为了解决RR隔离级别下的幻读问题,就引出了next-key 锁,是记录锁和间隙锁的组合。 Record Lock,记录锁,锁的是记录本身…...

Python+Yolov5跌倒检测 摔倒检测 人物目标行为 人体特征识别

PythonYolov5跌倒检测 摔倒检测 人物目标行为 人体特征识别如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01;前言这篇博客针对<<PythonYolov5跌倒摔倒人体特征识别>>编写代码&#xff0c;代码整洁&…...

计算机底层:储存器的性能指标(CPU和内存等硬件的性能以及 对比标准)

计算机底层&#xff1a;储存器的性能指标(CPU和内存等硬件的性能以及 对比标准) 内存&#xff1a; MAR是存放地址的寄存器&#xff1b;MDR是存放数据的寄存器。 MAR是存放地址的寄存器&#xff0c;那么其中的二进制位一定是不能重复的&#xff0c;试想&#xff0c;如果有有两个…...

操作留痕功能实现与探讨

操作留痕功能实现与探讨 背景 接手了一个单体应用项目&#xff0c;看系统介绍&#xff0c;说实现了【高性能的操作日志留痕】功能&#xff0c;就有点好奇它是怎么设计的&#xff0c;是阻塞队列还是怎样的线程池。结果我打开代码一看&#xff0c;真的是笑洗个人了。它是做了一…...

深入浅出消息队列MSMQ

消息队列MSMQ&#xff0c;相信稍有开发经验的小伙伴都了解一些。开始讲解之前&#xff0c;我们先弄清楚一件事&#xff0c;为什么我们要使用MSMQ&#xff1a; 您可能认为您能够通过一个简单的数据库表(一个应用程序往其中写入数据&#xff0c;另一个应用程序从中读取数据)来应用…...

Maven多模块开发

POM主要功能 maven学习教程很多&#xff0c;就不在赘述可以参考以下网站&#xff0c;这里只说明maven实际运用。 https://blog.csdn.net/xwh3165037789/article/details/121545762 菜鸟教程 Maven POM POM是在使用Maven构建项目最重要的部分&#xff0c; POM 中所有信息位于&l…...

QT之OpenGL帧缓冲

QT之OpenGL帧缓冲1. 概述1.1 帧缓冲的创建与删除1.2 帧缓冲的数据来源1.2.1 数据源与帧缓冲的关系1.2.2 纹理Attachment1.2.3 渲染缓冲对象Attachment1.2.4 两者的区别1.2.5 关于两者的使用场景2. Demo3. 后期处理4. 参考1. 概述 OpenGL管线的最终渲染目的地被称作帧缓冲(fram…...

$ 6 :选择、循环

if-else语句 #include <stdio.h> //判断输入值是否大于0 int main() {int i;while (scanf("%d",&i)){if (i > 0)//不要在括号后加分号{printf("i is bigger than O\n");}else {printf("i is not bigger than O\n");}}return O; } …...

【项目设计】高并发内存池 (四)[pagecache实现]

&#x1f387;C学习历程&#xff1a;入门 博客主页&#xff1a;一起去看日落吗持续分享博主的C学习历程博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 也许你现在做的事情&#xff0c;暂时看不到成果&#xff0c;但不要忘记&…...

玩转qsort——“C”

各位CSDN的uu们你们好呀&#xff0c;今天小雅兰的内容还是我们的深度剖析指针呀&#xff0c;上篇博客我们学习了回调函数这个知识点&#xff0c;但是没有写完&#xff0c;因为&#xff1a;小雅兰觉得qsort值得单独写出来&#xff01;&#xff01;&#xff01;好啦&#xff0c;就…...

【干货】又是一年跳槽季!Nginx 10道核心面试题及解析

Nginx是一款轻量级的高性能Web服务器和反向代理服务器&#xff0c;由俄罗斯的Igor Sysoev开发。它具有占用资源少、高并发、稳定性高等优点&#xff0c;被广泛应用于互联网领域。在Nginx的面试过程中&#xff0c;面试官通常会提出一些核心问题&#xff0c;本文将介绍一些常见的…...

【线程安全的HashMap有哪些,CurrentHashMap底层是怎么实现线程安全的】

在 Java 中&#xff0c;线程安全的 HashMap 通常有以下几种实现&#xff1a; Collections.synchronizedMap 方法&#xff1a;该方法可以将 HashMap 转换为线程安全的 Map。 Hashtable 类&#xff1a;Hashtable 是一种线程安全的集合类&#xff0c;它与 HashMap 类似&#xff0…...

若依框架菜单管理实战:手把手教你为列表页添加详情页(Vue+Element UI)

若依框架菜单管理实战&#xff1a;手把手教你为列表页添加详情页&#xff08;VueElement UI&#xff09; 在后台管理系统开发中&#xff0c;列表页与详情页的联动是基础但关键的功能需求。许多开发者在使用若依框架的代码生成器快速搭建项目后&#xff0c;常常面临一个典型问题…...

只做中外合作办学,并且把它做深、做精

在中外合作办学领域&#xff0c;信息的透明与路径的可靠始终是学生与家长最核心的诉求。当越来越多项目涌现&#xff0c;如何甄别真正具备专业沉淀与行业敬畏心的服务者&#xff0c;成为选择前的第一道课题。这就是简申品牌存在的意义&#xff0c;而它背后的力量&#xff0c;来…...

VMDE终极指南:如何快速检测虚拟机环境的完整教程

VMDE终极指南&#xff1a;如何快速检测虚拟机环境的完整教程 【免费下载链接】VMDE Source from VMDE paper, adapted to 2015 项目地址: https://gitcode.com/gh_mirrors/vm/VMDE VMDE&#xff08;Virtual Machine Detection Enhanced&#xff09;是一款强大的开源虚拟…...

迭代式代码进化:基于进化算法与LLM的自动化代码优化系统

1. 项目概述&#xff1a;当代码学会自我进化最近在GitHub上看到一个挺有意思的项目&#xff0c;叫aaronjmars/iterative-code-evolution。光看名字&#xff0c;你可能会觉得这又是一个关于“代码生成”或者“AI编程”的常规项目。但当我深入进去&#xff0c;把玩了一番之后&…...

保姆级教程:用MNN在Android上部署你的第一个图像分类App(从模型转换到实时摄像头识别)

从零构建Android端智能图像分类应用&#xff1a;MNN实战全流程解析 在移动互联网时代&#xff0c;将AI能力嵌入移动端应用已成为提升用户体验的关键。想象一下这样的场景&#xff1a;用户打开手机就能实时识别植物种类、辨别商品真伪&#xff0c;或是自动分类相册中的照片——这…...

树莓派玩转MIPI:手把手教你连接CSI摄像头与DSI显示屏(保姆级图文教程)

树莓派玩转MIPI&#xff1a;手把手教你连接CSI摄像头与DSI显示屏&#xff08;保姆级图文教程&#xff09; 树莓派作为一款广受欢迎的微型计算机&#xff0c;其强大的扩展能力一直是开发者们津津乐道的话题。特别是它内置的MIPI接口&#xff0c;为连接高性能摄像头和显示屏提供了…...

macOS桌面歌词神器LyricsX:免费开源歌词同步工具完整指南

macOS桌面歌词神器LyricsX&#xff1a;免费开源歌词同步工具完整指南 【免费下载链接】Lyrics Swift-based iTunes plug-in to display lyrics on the desktop. 项目地址: https://gitcode.com/gh_mirrors/lyr/Lyrics LyricsX是一款专为macOS设计的开源桌面歌词显示工具…...

API淘宝关键词搜索:运用场所、使用方式及获客逻辑

在电商生态中&#xff0c;淘宝关键词搜索API是连接第三方系统与平台商品数据的核心桥梁。其核心价值在于通过标准化接口&#xff0c;精准、合规地获取关键词对应的商品、店铺及市场数据&#xff0c;为各类业务提供坚实的数据支撑。相较于传统爬虫&#xff0c;API调用具备合规性…...

W4A4量化技术:OSC框架如何实现高效LLM部署

1. OSC框架&#xff1a;硬件高效的W4A4量化革命在大型语言模型(LLM)部署领域&#xff0c;4-bit量化(W4A4)正成为突破算力瓶颈的关键技术。传统8-bit量化虽已成熟&#xff0c;但当我们将精度压缩至4-bit时&#xff0c;激活张量中的异常值(Outliers)会像"黑洞"般吞噬有…...

从零粉丝到行业KOL,ChatGPT驱动的LinkedIn内容矩阵搭建全链路,含17个已验证Prompt模板+3类避坑清单

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;从零粉丝到行业KOL的底层认知跃迁 成为技术领域有影响力的声音&#xff0c;从来不是靠日更三篇“速成教程”&#xff0c;而是源于对价值创造逻辑的重构。当多数人还在纠结“选什么平台”“起什么昵称”…...