Web3 + Solidity:将参数传递给合约的构造函数

Posted

技术标签:

【中文标题】Web3 + Solidity:将参数传递给合约的构造函数【英文标题】:Web3 + Solidity: Passing in arguments to a contract's constructor 【发布时间】:2018-09-16 16:47:10 【问题描述】:

我正在尝试为我正在编写的智能合约编写一些单元测试,但是在弄清楚如何在创建时将参数传递给我的合约的构造函数时遇到了困难。以下是我的代码:

const assert = require('assert');
const ganache = require('ganache-cli');
const provider = ganache.provider();
const Web3 = require('web3');
const web3 = new Web3(provider);
const  interface, bytecode  = require('../ethereum/compile');

let token;
let accounts;

beforeEach(async () => 
  accounts = await web3.eth.getAccounts();
  token = await new web3.eth.Contract(JSON.parse(interface))
    .deploy( data: bytecode )
    .send( from: accounts[0], gas: '1000000' );
  token.setProvider(provider);
);

describe('Token Contract', () =>  ... );

基于此设置,我如何将参数传递给合约?我通过学习稳固性课程达到了这一点,但是课程中的合同没有任何关于它的构造函数的选项,所以它从来没有涵盖他们应该去哪里。感谢您的帮助!

【问题讨论】:

【参考方案1】:

好吧,我自己想通了:为传递给deploy 函数的对象添加一个属性作为参数数组。

.deploy( data: bytecode, arguments: [ ... ] )

【讨论】:

以上是关于Web3 + Solidity:将参数传递给合约的构造函数的主要内容,如果未能解决你的问题,请参考以下文章

如何将一组结构从 web3js 发送到 Solidity 合约?

如何在 REMIX(Solidity IDE)中从 web3 调用带有参数的构造函数

web3.js 调用传递函数返回 Solidity 函数的参数数量无效

如何使用solidity和web3将以太币存入账户?

Web3与智能合约:开发一个简单的DApp并部署到以太坊测试网(Solidity+Hardhat+React)① 环境搭建

二solidity 基础进阶(2.1)—— library 库合约《实战NFT web3 solidity(新版本0.8.+)》