npm 包 solc 使用教程

简介

solc 是 Solidity 编译器的 npm 包,它能将 Solidity 代码编译成 EVM 字节码。本文将为大家介绍如何使用该包来编译 Solidity 代码并生成字节码。

安装

首先,需要在本地安装 Node.js 和 npm(Node.js 包管理器),如果已经安装,请跳过此步骤。

可以在 Node.js 官网下载安装包,安装完毕后,在终端输入以下命令进行检查:

---- --
--- --

如果输出了对应的版本号,说明已经安装成功。

然后,就可以通过以下命令来安装 solc

--- ------- ----

示例代码

下面我们将为大家介绍如何使用 solc 这个包来编译 Solidity 代码。

以一个简单的合约为例:

------ -------- -------

-------- ---------- -
    ------- ------ ---------

    -------- ----------------- -------- ------ -
        -------- - --------
    -
-

编写一个 JavaScript 文件,使用 solc 包来编译这个 Solidity 合约:

----- ---- - ----------------
----- ---- - ----------------
----- -- - --------------

----- ------------ - ----------------------- ------------------
----- -------------- - ----------------------------- --------

----- ----- - -
    --------- -----------
    -------- -
        ----------------- -
            -------- --------------
        -
    --
    --------- -
        ---------------- -
            ---- -
                ---- ------- ---------------
            -
        -
    -
--

----- ------ - ------------------------------------------------
----- -------- - ---------------------------------------------------------------------
----- --- - -----------------------------------------------------

------------------------ ----------
------------------- -----

首先将 Solidity 合约读入,然后将其作为 sources 的元素,传入 solc 的编译器,并在 settings 中声明需要输出的 abievm.bytecode

编译后的结果是一个 JSON,通过解析它,我们可以得到编译后的字节码和 ABI。

解析

下面我们对代码进行分析。

读取 Solidity 合约

----- ------------ - ----------------------- ------------------
----- -------------- - ----------------------------- --------

使用 Node.js 内置模块 path 来得到合约文件的完整路径,再使用 fs 模块读取文件内容。

编译 Solidity 合约

----- ----- - -
    --------- -----------
    -------- -
        ----------------- -
            -------- --------------
        -
    --
    --------- -
        ---------------- -
            ---- -
                ---- ------- ---------------
            -
        -
    -
--

----- ------ - ------------------------------------------------

将 Solidity 合约代码传入 solc.compile() 这个方法中,得到一个 JSON 格式的编译结果 output

input 变量中,我们需要传入 Solidity 合约的源码,以及一些编译选项(比如需要输出哪些结果格式)。这里的 outputSelection 子项控制了需要输出哪些结果。abi 对应了 MyContract.sol 中定义的函数、变量等接口的集合,evm.bytecode 对应了合约的 EVM 字节码。

得到编译结果

----- -------- - ---------------------------------------------------------------------
----- --- - -----------------------------------------------------

在编译后得到的 JSON 格式中,每个合约都被转换为了一个对象。使用合约名称 MyContract 固定索引合约,使用 evm.bytecode.object 得到合约的 EVM 字节码。使用 abi 得到合约的 ABI 接口定义。

总结

本文介绍了 using solc 这个包来进行 Solidity 合约的编译,演示了一个简单的例子,并分析了源代码中的具体实现。希望对大家的 Solidity 开发有所帮助。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/57393


猜你喜欢

  • npm 包 gen-pug-source-map 使用教程

    在前端开发中,Pug 是一种流行的 HTML 模板语言,它可以让我们以更简洁优美的方式编写 HTML。然而,当我们在开发中使用 Pug 时,很容易遇到调试问题。这时,gen-pug-source-ma...

    6 年前
  • npm 包 rollup-plugin-pug 使用教程

    在前端开发中,我们常常需要使用模板引擎来将数据动态地展示在页面上。Pug 是一种强大的模板引擎,在前端开发中得到广泛应用。如果你使用 Rollup 进行模块打包,那么 rollup-plugin-pu...

    6 年前
  • npm 包 rollup-plugin-graph 使用教程

    在前端项目开发中,随着代码规模的不断增大和项目架构的复杂化,对于代码的管理和打包已经成为了前端面临的一个重要问题。为了解决这类问题,出现了一些工具,例如 webpack、rollup 等,它们可以自动...

    6 年前
  • npm 包 vue-runtime-helpers 使用教程

    简介 vue-runtime-helpers 是一个 Vue 运行时辅助库,提供了一些常见的运行时功能,如处理 v-model,生成循环列表等。将这些常见的功能封装到一个库中,可以简化 Vue 项目的...

    6 年前
  • 聊一聊 ThreeJS 反锯齿

    ThreeJS 反锯齿解析:详细介绍、学习和指导意义 在 ThreeJS 中,反锯齿是一项重要的技术,可用于消除模型边缘的锯齿状外观。本文将深入探讨 ThreeJS 反锯齿技术的原理、使用方法以及常见...

    6 年前
  • npm 包 calipers-svg 使用教程

    在前端开发中,我们经常需要测量页面中各个元素的尺寸,以便进行布局设计和样式调整。而 calipers-svg 是一款可以帮助我们快速测量页面元素大小的 npm 包。

    6 年前
  • npm 包 calipers-png 使用教程

    calipers-png 是一个用于获取 PNG 图片尺寸信息的 npm 包。在前端开发中,我们经常需要获取图片的尺寸信息,并且在一些场景中尺寸信息是必不可少的,比如图片排版、响应式布局等。

    6 年前
  • npm 包 calipers-jpeg 使用教程

    简介 在前端项目中,图片处理一直是一个必不可少的部分。而 calipers-jpeg 是一个用于测量 JPEG 图片质量和元数据的 Node.js 模块。它可以在项目中进行图片压缩和优化,提高项目加载...

    6 年前
  • npm 包 calipers-gif 使用教程

    在前端开发中,我们需要经常处理图片。而对于 GIF 图片,就需要使用相关的工具来对其进行分析和处理。今天我来介绍一个非常好用的 npm 包 calipers-gif,让我们一起来学习如何使用它。

    6 年前
  • npm包calipers使用教程

    前言 在前端开发中,我们经常会使用到图片,而且图片的尺寸大小对页面性能以及用户体验有着很大的影响,因此如何快速、准确地计算出图片的尺寸大小,已成为前端开发中一项非常重要的技能。

    6 年前
  • npm 包 calipers-webp 使用教程

    随着互联网技术的发展,WebP 已经逐渐成为了一种流行的图像格式,它可以提供更高的压缩率和更快的加载速度。而 calipers-webp 这个 npm 包则是一款可以用来对 WebP 图片进行分析的工...

    6 年前
  • npm 包 assets 使用教程

    随着前端技术的不断发展,前端开发中使用的各种工具和库也越来越多。而 npm 管理的包就是其中一个重要的工具之一。npm 管理的包包含了各种前端开发中需要的各种东西,比如说库、框架等等。

    6 年前
  • npm 包 postcss-functions 使用教程

    前言 在前端开发中,我们通常会使用 CSS 预处理器来编写 CSS 代码,并使用相应的 npm 包来优化代码编写。而 postcss-functions 就是一个可以提供额外的函数来优化 CSS 的 ...

    6 年前
  • NPM 包 PostCSS-Assets 使用教程

    前言 在现代 Web 开发过程中,优化页面性能和用户体验就变得愈发重要,其中前端工程师通常会利用各种技术手段优化 CSS 和图片等资源的处理和加载,从而提高页面加载速度和用户交互响应速度。

    6 年前
  • npm 包 rollup-plugin-md 使用教程

    前言 在前端开发中,构建打包工具是必不可少的。使用打包工具可以将多个 JavaScript 文件合并成一个文件,减少网络请求次数,提高网页性能,加快网页加载速度。而在打包工具中,rollup 是一个很...

    6 年前
  • npm 包 rollup-plugin-css-only 使用教程

    前言 在前端开发中,我们常常需要使用工具将各种文件打包成一个项目。对于样式文件,如何解决其压缩、处理以及集成等问题,往往是一个需要考虑的痛点。 这时候,就需要使用到 rollup-plugin-css...

    6 年前
  • NPM 包 rollup-plugin-url 使用教程

    前言 在前端开发中,我们经常需要将一些图片、字体等静态资源打包进我们的项目中。使用 rollup-plugin-url 可以很方便地实现这个功能。本文将介绍 rollup-plugin-url 的使用...

    6 年前
  • npm 包 rollup-plugin-vue 使用教程

    在前端开发中,我们常常需要将多个模块打包成一个 bundle 文件。而在这个过程中,有一些模块可能是由 Vue 组件构成的。此时我们就需要使用 rollup-plugin-vue 这个 npm 包,它...

    6 年前
  • npm 包 rollup-plugin-virtual 使用教程

    前言 前端开发中,用到很多不同的工具和框架来提高开发效率和代码质量。其中,rollup.js 是一个高效的 JavaScript 模块打包器,可以将多个 JavaScript 模块打包成一个文件,通过...

    6 年前
  • npm 包 fib-rollup 使用教程

    介绍 在前端开发中,我们常常需要使用到打包工具对我们的代码进行打包,而针对 JavaScript 的打包工具有很多,例如 webpack、rollup 等等。在这篇文章中,我们将介绍如何通过 npm ...

    6 年前

相关推荐

    暂无文章