【以太坊系列-005】使用solc编译solidity智能合约,并生产web3deploy格式的代码

2023-10-26

说明

本文主要介绍,只通过solc来进行智能合约的部署,更简单的方式是通过remix直接生成。

该场景是用于用户自己修改了solc编译器,remix无法使用的情况。


1、 代码结构
# cat counter.sol
pragma solidity ^0.4.20;

contract Counter {
    uint count;
    
    function Counter() public
    {
        count = 0;
    }
    
    function increment() public {
       count = count + 1;
    }

    function getCount() constant returns (uint) {
       return count;
    }

}

2、生成web3deploy代码的脚本

#!/bin/bash 
#######################################################################################
#   v1: 当前版本暂时不支持合约中构造器带参数的情况,如果合约中带参数,请自行处理
#       仅作为演示使用
#   v2: 待后续开发
#       
#   usage:
#         sh gen_web3deploy.sh file.sol
#   author:
#         wechat : linshenyuan00
#######################################################################################

file_name=$1 
echo "#######################################################################################"
echo "begin to compile :[$file_name]."

if [ ! -f $file_name ] || [ -z $file_name ] ; then
    echo "ERROR: the file not exist."
    echo "usage should be : sh gen_web3deploy.sh file.sol"
    exit 1
fi 

#######################################################################################
#   1,get bin info
#######################################################################################
context=`solc $file_name --bin `
ret=$?
if [ "$ret" != "0" ]; then
    echo "ERROR: [solc $file_name --bin] failed."
    exit 1
fi 
bin_info=`echo $context |awk -F ' ' '{print $5}'`
echo "bin_info="$bin_info

#######################################################################################
#   2,get abi info
#######################################################################################
context=`solc $file_name --abi `
ret=$?
if [ "$ret" != "0" ]; then
    echo "ERROR: [solc $file_name --abi] failed."
    exit 1
fi 

abi_info=`echo $context |awk -F ' ' '{print $7}'`
echo "abi_info="$abi_info

#######################################################################################
#   3,gen web3deploy info
#######################################################################################

web3deploy_file="web3deploy.log"
>$web3deploy_file

cat >$web3deploy_file <<EOF
var counterContract = web3.eth.contract($abi_info);
var counter = counterContract.new(
   {
     from: web3.eth.accounts[0], 
     data: '0x$bin_info', 
     gas: '4700000'
   }, function (e, contract){
    console.log(e, contract);
    if (typeof contract.address !== 'undefined') {
         console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
    }
 })
EOF

#######################################################################################
#   4,print web3deploy info
#######################################################################################
echo "#######################################################################################"
echo ""
echo "the web3deploy result is:"
echo "#######################################################################################"
echo ""
cat $web3deploy_file

echo ""
echo "#######################################################################################"


生成对应的web3deploy代码

# sh gen_web3deploy.sh counter.sol

拷贝 web3deploy中的代码,到geth控制台,部署即可

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【以太坊系列-005】使用solc编译solidity智能合约,并生产web3deploy格式的代码 的相关文章

随机推荐

  • (Java 基础知识) Java反射

    本篇文章依旧采用小例子来说明 因为我始终觉的 案例驱动是最好的 要不然只看理论的话 看了也不懂 不过建议大家在看完文章之后 在回过头去看看理论 会有更好的理解 下面开始正文 案例1 通过一个对象获得完整的包名和类名 1 2 3 4 5 6
  • docker如何查看容器的挂载目录

    执行命令 docker inspect 容器ID grep Mounts A 20 Mounts Type bind Source root projects project dist Destination root share ngin
  • 利用Repeater控件显示主-从关系数据表

    本文介绍了一种利用Repeater控件显示主 从关系数据表的方法 原文参见 http support microsoft com default aspx scid kb en us 306154 NestedRepeater aspx
  • Lora配置

    文章目录 前言 一 LoRa是什么 二 使用步骤 总结 前言 随着物联网技术的发展 越来越多的应用场景需要进行数据传输和通信 而LoRa技术的出现 为长距离 低功耗 低速率的通信提供了一种可靠的解决方案 正点原子的LoRa模块 是一种基于S
  • Oracle 输出方式

    用过几次经常忘记 特此做个笔记 1 Oracle 输出没有sqlserver方便 直接print message 就行 而是需要放到 块 中输出 比如下面的匿名块 set serveroutput on declare begin dbms
  • pcm vlc 文件_VLC播放pcm

    Applications VLC app Contents MacOS VLC demux rawaud rawaud channels 1 rawaud samplerate 48000 rawaud fourcc s8 Users lz
  • 白银价格波动因素是什么?

    在白银产品的投资中 人们要更加全面的对市场进行了解 其中涉及到的范围比较广阔 只有对整个市场的发展和影响因素进行细致的分析 才可以更好的参与到白银产品的投资中 为了更好的获得实际性的利益 重点要对白银的价格进行细致的了解 这样使人们在投资时
  • 特别篇:input小结

    input 我们日常中在使用Python时都会使用input 在控制台进行输出 但是不知道大家发现没有 因为Python是一种动态语言 所以不会像Java中的Scanner类 在代码中可以控制输入的类型 所以当我们输入数字时 底层也会把我们
  • 程序流程图画法复习-三种循环语句(for,while,do while)

    程序流程图画法复习 1 程序流程图的作用 程序流程图的作用程序流程图的作用程序流程图的作用 程序流程图是人们对解决问题的方法 思路或算法的一种描述 流程图的优点 a 采用简单规范的符号 画法简单 b 结构清晰 逻辑性强 c 便于描述 容易理
  • HTTP请求行详解

    目录 一 认识URL 二 认识方法 2 1 GET方法 2 2 POST方法 2 3 其他方法 请求行也就是HTTP请求的第一行 接下来将对第一行内容进行详细解释 一 认识URL 平时我们俗称的 网址 其实就是说的 URL Uniform
  • 从0开始学PyTorch(一):线性回归、Softmax与分类模型、多层感知机

    文章目录 线性回归 模型 数据集 损失函数 优化函数 随机梯度下降 Softmax与分类感知机 softmax的基本概念 多层感知机 多层感知机的基本知识 隐藏层 表达公式 激活函数 线性回归 线性回归的基本要素 模型 为了简单起见 这里我
  • java文件下载接口,含泪整理面经

    Java如何入门 1 建立好开发环境 首先建立好开发环境非常重要 工欲善其事 必先利其器 做任何开发 首先就是要把这个环境准备好 之后就可以去做各种尝试 尝试过程中就能逐渐建立信心 初学者往往在环境配置中被各种预想不到的问题弄得很沮丧 这里
  • Python工业项目实战 04:数仓维度层DWS层构建

    知识点01 课程回顾 ODS层与DWD层的功能与区别是什么 ODS 原始数据层 存储格式 AVRO 数据内容 基本与原始数据是一致的 DWD 明细数据层 存储格式 Orc 数据内容 基于与ODS层是一致的 ODS层的需求是什么 自动化建库建
  • php怎么判断密码是否达标,php中简单的密码强中弱判断,php密码验证规则

    密码种类 1 小写字母 2 大写字母 3 数字 4 特殊符号 弱 1 中 2 强 3 或 4 长度 6 16个字符 区分大小写 1 长度判断 pwd len strlen password if pwd len gt 16 pwd len
  • 【华为OD机试】仿 LISP 运算【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 LISP 语言唯一的语法就是括号要配对 形如 OP P1 P2 括号内元素由单个空格分割 其中第一个元素 OP 为操作符 后续元素均为其参数 参数个数取决于操作符类型
  • 百度语音合成精简版

    我参照文档合成的源码下载 https download csdn net download qq 31939617 10388588 下载 文档 Android TTS SDK 集成进入helloworld 项目 一 简介 本文针对遇见集成
  • io流读写文件(文件内容修改)

    package cn sos psasps import java io BufferedReader import java io BufferedWriter import java io FileReader import java
  • Git第十三讲 Git重置和回滚更改

    在使用Git时 我们有时可能会犯错或者需要撤销之前的提交或更改 Git提供了一些强大的命令来重置和回滚更改 帮助我们管理项目的版本控制 本文将介绍如何使用Git进行重置和回滚操作 重置到指定提交 重置 Reset 命令允许我们将分支的指针移
  • tar 打包压缩命令

    tar 命令用于文件的打包或压缩 是最为常用的打包压缩命令 其语法格式如下 tar 选项 文件名 tar gz 源文件 tar czvf xxx tar gz source file tar czvf 包名 tar gz 源文件 以tar
  • 【以太坊系列-005】使用solc编译solidity智能合约,并生产web3deploy格式的代码

    说明 本文主要介绍 只通过solc来进行智能合约的部署 更简单的方式是通过remix直接生成 该场景是用于用户自己修改了solc编译器 remix无法使用的情况 1 代码结构 cat counter sol pragma solidity