我遇到了一个相当普遍的问题,似乎我无法优雅而有效地解决问题.
我要将一个任意长的任意长字符串数组传递给一个可靠的契约.
在我看来它应该是这样的
function setStrings(string [] row)
Run Code Online (Sandbox Code Playgroud)
但似乎无法做到.
我怎么解决这个问题?
我有一个节点js进程,它创建一个web3 websocket连接,如下所示:
web3 = new Web3('ws://localhost:7545')
Run Code Online (Sandbox Code Playgroud)
当进程完成时(我发送一个SIGTERM),它不会退出,而是永远挂起而没有控制台输出.
我注册了SIGINT和SIGTERM一个听众在什么处理过程中具有突出以观察process._getActiveRequests()和process._getActiveHandles(),我看到以下内容:
Socket {
connecting: false,
_hadError: false,
_handle:
TCP {
reading: true,
owner: [Circular],
onread: [Function: onread],
onconnection: null,
writeQueueSize: 0 },
<snip>
_peername: { address: '127.0.0.1', family: 'IPv4', port: 7545 },
<snip>
}
Run Code Online (Sandbox Code Playgroud)
为了完整性,这里是监听信号的代码:
async function stop() {
console.log('Shutting down...')
if (process.env.DEBUG) console.log(process._getActiveHandles())
process.exit(0)
}
process.on('SIGTERM', async () => {
console.log('Received SIGTERM')
await stop()
})
process.on('SIGINT', async () => {
console.log('Received SIGINT')
await stop()
})
Run Code Online (Sandbox Code Playgroud)
看起来web3正在打开一个套接字,这是有道理的,因为我从未告诉它关闭连接.通过文档和谷歌搜索,它看起来不像web3对象的close或end方法.
手动关闭stop …
在OOP语言中,继承的组合是众所周知的最佳实践.Solidity也是一种OOP语言,但也存在气体效率问题.
问题是,在Solidity中,考虑到各自的天然气成本,组成和继承如何相互比较?
我正在尝试使用npm solc编译可靠性智能合约.我试着遵循不同的例子.链接到示例:https://medium.com/coinmonks/how-to-compile-a-solidity-smart-contract-using-node-js-51ea7c6bf440
我编写了如下代码:
const path = require('path');
const fs = require('fs');
const solc = require('solc');
const helloPath = path.resolve(__dirname, 'contracts', 'hello.sol');
console.log("First" + helloPath);
const source = fs.readFileSync(helloPath, 'UTF-8');
console.log("Second" + source);
console.log(solc.compile(source, 1));
Run Code Online (Sandbox Code Playgroud)
运行上面的代码时出现以下错误.
AssertionError [ERR_ASSERTION]: Invalid callback specified.
at wrapCallback (C:\Users\mouazzamj058\solc_example\node_modules\solc\wrapper.js:16:5)
at runWithReadCallback (C:\Users\mouazzamj058\solc_example\node_modules\solc\wrapper.js:37:42)
at compileStandard (C:\Users\mouazzamj058\solc_example\node_modules\solc\wrapper.js:78:14)
at Object.compileStandardWrapper (C:\Users\mouazzamj058\solc_example\node_modules\solc\wrapper.js:85:14)
at Object.<anonymous> (C:\Users\mouazzamj058\solc_example\example.js:4:19)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
Run Code Online (Sandbox Code Playgroud)
请帮忙.
坚固性:
function ping() public view returns ( uint ) {
return 999999999;
}
function ping2() public returns ( uint ) {
return 999999999;
}
Run Code Online (Sandbox Code Playgroud)
JavaScript Ethers.js:
(await contract.ping()).toString(); //-> 999999999 ( correct )
(await contract.ping2()).toString(); //-> [object Object] ( ?? )
Run Code Online (Sandbox Code Playgroud)
为什么 ping2 返回 [Object Object] ?如何获取 ping2 的数据?
还:
(await contract.sendTransaction(txObj)).toString(); //-> [object Object] ( ?? )
Run Code Online (Sandbox Code Playgroud)
为什么使用 sendTransaction 还返回 [object Object] ?
我目前正在构建符合 ERC721 标准的合约,并已在此处发布合约: https: //ropsten.etherscan.io/address/0xa513bc0a0d3af384fefcd8bbc1cc0c9763307c39 - 我现在正在尝试验证并发布合约源代码
我的文件的开头如下所示:
// SPDX-License-Identifier: MIT
// We will be using Solidity version 0.8.4
pragma solidity 0.8.4;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract ViperToken is ERC721 {
Run Code Online (Sandbox Code Playgroud)
但是,当尝试使用 Solidity 单个文件进行验证和发布时,出现以下错误:
ParserError: Source "@openzeppelin/contracts/token/ERC721/ERC721.sol" not found: File import callback not supported
--> myc:6:1:
|
6 | import "@openzeppelin/contracts/token/ERC721/ERC721.sol"
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我指出 1. 解决此问题或 2. 有关如何正确编写导入了可以使用 Etherscan 验证的依赖项的合约的文档。现在这只是一个单文件合同。
我正在创建一个开发应用程序,例如每隔 5 分钟就想从我的 erc20 代币的智能合约中运行一些代码。在 Solidity 中,如何每 5 分钟调用该函数一次?
function splitAmount(uint256 amount) private {
a1.transfer(amount.div(2));
a2.transfer(amount.div(2));
}
Run Code Online (Sandbox Code Playgroud)
我看过其他关于此的主题,但我觉得事情过于复杂。使用此代码,金额除以 2 后在 a1 和 a2 之间平均分配。
如何使用相同的代码执行 80/20 拆分之类的操作?
我创建了一个基本合同。但不知道提现功能。
我尝试创建一个基本功能,但它不起作用
function withdraw() public {
msg.sender.transfer(address(this).balance);
}
Run Code Online (Sandbox Code Playgroud) 我正在创建一个签发合同的合同.我想要一个持有令牌的帐户,以便能够检查他们拥有的所有令牌的百分比.我知道以太坊还没有实现浮点数.我该怎么办?
solidity ×10
ethereum ×7
erc20 ×2
javascript ×2
blockchain ×1
composition ×1
eris ×1
ethers.js ×1
etherscan ×1
inheritance ×1
node.js ×1
npm ×1
oop ×1
performance ×1
websocket ×1