是否可以在没有源代码的情况下获取已知合约地址的ABI?
我发现的唯一方法是使用 etherscan 的 API,但它仅适用于经过验证的合约。
我正在使用 web3.js 库开发一个小项目,该项目订阅 NFT 智能合约上的事件,以通过 OpenSea 跟踪该项目的所有销售。当使用 ETH 完成销售时,这种方法工作正常,但是当使用 OpenSea 提供的另一种付款方式(USDC、DAI、WETH 等)进行销售时,来自 web3.js 的交易价值将返回为 0 ,并且在 etherscan.io 上也显示 0。以下是代表此问题的示例交易:https://etherscan.io/tx/0x17f050e3fb6d8f0bbb4d9b4e8cd477f8197a87a3a68b360a60a028d7b1037532。无论使用什么类型的货币,关于如何获得正确价值的任何想法?
前的
web3.eth.getTransaction('0x17f050e3fb6d8f0bbb4d9b4e8cd477f8197a87a3a68b360a60a028d7b1037532').then((response) => {
console.log(response);
Run Code Online (Sandbox Code Playgroud)
});
回复
{
accessList: [],
blockHash: '0x6140d3cb5c271fb351e0a6e9e35b32cf0607ad526152f40f2d98107a97b0212b',
blockNumber: 13545512,
chainId: '0x1',
from: '0x3F4D7b0Eba8CB40D94713023d9Dc02FdB0a5169C',
gas: 391246,
gasPrice: '157998874325',
hash: '0x17f050e3fb6d8f0bbb4d9b4e8cd477f8197a87a3a68b360a60a028d7b1037532',
input: '0xab834bab0000000000000000000000007be8076f4ea4a4ad08075c2508e481d6c946d12b00000000000000000000000074144fb8749f99382091118f7487f4a541be6d7700000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b3256965e7c3cf26e11fcaf296dfc8807c01073000000000000000000000000bd3531da5cf5857e7cfaa92426877b022e612cf80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000007be8076f4ea4a4ad08075c2508e481d6c946d12b0000000000000000000000003f4d7b0eba8cb40d94713023d9dc02fdb0a5169c00000000000000000000000074144fb8749f99382091118f7487f4a541be6d770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bd3531da5cf5857e7cfaa92426877b022e612cf80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000226000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000165a0bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000618193b7000000000000000000000000000000000000000000000000000000006182e53b690c3f82a9b6570ef2de1af15e15942c931dba8a2bd9d5012b74b213beea4da400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000226000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000165a0bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006182d5b70000000000000000000000000000000000000000000000000000000000000000065ae400a094fafb63173dcf4c7861ca0264920136639dbe27b5956aa6282bb00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006a0000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000007e0000000000000000000000000000000000000000000000000000000000000088000000000000000000000000000000000000000000000000000000000000009200000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001c08da96edfaed45809c68db44cabb487dba56fd196fe46d02d679f0161dee94293eaedf214e043bc4d2e3dd69cce82e21ead967d7f1cd8fc505c04781e2d144e308da96edfaed45809c68db44cabb487dba56fd196fe46d02d679f0161dee94293eaedf214e043bc4d2e3dd69cce82e21ead967d7f1cd8fc505c04781e2d144e35c5321ae45550685308a405827575e3d6b4a84aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000006423b872dd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074144fb8749f99382091118f7487f4a541be6d7700000000000000000000000000000000000000000000000000000000000008ff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006423b872dd0000000000000000000000003f4d7b0eba8cb40d94713023d9dc02fdb0a5169c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008ff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006400000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
maxFeePerGas: '201893464202',
maxPriorityFeePerGas: '1500000000',
nonce: 19,
r: '0x4c8e6fbe4a49439d957e0e725f3f7e897329557a972863143ff2a34458ab190',
s: '0x25afd4caa4cdc1f93923b5f41a89bc191d0e52c27a36e51e3015ed08560fea5d',
to: '0x7Be8076f4EA4A4AD08075C2508e481d6C946D12b',
transactionIndex: 328,
type: 2,
v: '0x1',
value: '0'
}
Run Code Online (Sandbox Code Playgroud) 我在编译时遇到 React 应用程序的问题。请找到下面的问题并截图。
ERROR in ./node_modules/web3-providers-http/lib/index.js 30:11-26
Module not found: Error: Can't resolve 'http' in '/Users/rohit/Downloads/Personal/web3/react-minting-website/node_modules/web3-providers-http/lib'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "http": require.resolve("stream-http") }'
- install 'stream-http'
If you don't want to include a polyfill, you …Run Code Online (Sandbox Code Playgroud) 我正在做一个主题为“销售”的项目。所以,对于前端(React)和后端(PHP)。
我在理解如何在项目中使用我的智能合约时遇到了问题。为了部署,我使用以太坊钱包 0.9.0 和测试网络 Rinkeby。他在 EW 工作。
假设我的代码中有购买按钮,并且我的合约中有如下功能:
function Buy()
public
payable
{
require (msg.sender != seller);
require (msg.value >= price);
orderNum++;
safePay +=msg.value;
}
Run Code Online (Sandbox Code Playgroud)
现在,我该如何使用它?我听说过 web3.js,但是(我不确定)我需要 php 请求。
或者,如果我的合约部署在以太坊钱包 Rinkeby 中,我可以直接通过代码使用它,不需要再次部署。
我是这个主题的初学者,可能会犯错误(即使在视图中),但如果有人可以解释这一点,我会非常高兴。
谢谢。
我正在开发一个带有 webpack 的小型 Dapp 和基于 Web 组件(lit-library)的 UI。为了捆绑文件,我使用 webpack 和 webpack-dev-server 来刷新页面。一切对我来说都很好。
现在,我尝试使用 web3 与我的智能合约交互,但是当我导入 web3 并从中创建一个新实例时,出现以下错误:
Uncaught Error: Cannot find module 'http'
webpackMissingModule xml-http-request.js:21
js xml-http-request.js:21
Webpack 14
xml-http-request.js:21:19
webpackMissingModule xml-http-request.js:21
js xml-http-request.js:21
Webpack 14
__webpack_require__
js
__webpack_require__
js
__webpack_require__
js
__webpack_require__
js
__webpack_require__
js
__webpack_require__
<anonymous>
<anonymous>
<anonymous>
Run Code Online (Sandbox Code Playgroud)
此错误出现在我的 Firefox 的控制台中。
Uncaught Error: Cannot find module 'http'
webpackMissingModule xml-http-request.js:21
js xml-http-request.js:21
Webpack 14
xml-http-request.js:21:19
webpackMissingModule xml-http-request.js:21
js xml-http-request.js:21
Webpack 14
__webpack_require__
js
__webpack_require__
js
__webpack_require__
js
__webpack_require__ …Run Code Online (Sandbox Code Playgroud) 如何即时追踪BSC网络中钱包的交易情况?(我正在考虑使用 web3 js。)
我不想使用 BSCscan 上的 api 来执行此操作。据我所知,它不会立即显示出来。
我正在尝试从 HTML 运行 web3.js。现在到目前为止我已经能够调用window.solana.connect();和window.solana.disconnect();运行了。但是,当我尝试运行下面的代码时,它不起作用。我测试了它的各种选项,例如删除“web3”。从代码中但仍然不起作用。如果有人可以指导我如何建立连接,我将不胜感激。
const connection = new web3.Connection(web3.clusterApiUrl("devnet"));
Run Code Online (Sandbox Code Playgroud)
我下面的大部分代码来自 Stackoveflow 上所做的研究。链接如下: Solana:添加 Sollet / Phantom Wallet 连接到我的网站 - 步骤? 我想在 solana 上铸造一个新代币。如何使用 solana-web3.js 执行此操作? 如何使用 Solana 的 web3.js sdk 传输 SOL? 如何通过 Phantom 使用 web3js 正确传输 Solana SOL
不幸的是 Phantom 网站上的文档也没有帮助。 https://docs.phantom.app/integrating/building-a-connection
我现有的代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Welcome to Decentralized Ecommerce</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/web3/3.0.0-rc.5/web3.min.js" integrity="sha512-jRzb6jM5wynT5UHyMW2+SD+yLsYPEU5uftImpzOcVTdu1J7VsynVmiuFTsitsoL5PJVQi+OtWbrpWq/I+kkF4Q==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="{{ url_for('static', filename='app.js') }}"></script> …Run Code Online (Sandbox Code Playgroud) 我在 Ropsten 以太坊测试网络上部署了以下智能合约,之后我尝试使用 @alch/alchemy-web3 npm 包进行交易(是的,我正在使用 Alchemy API),但正如你所看到的,我在交易中收取了费用。这是为什么?公共视图函数调用不应该花费 0 Gas 吗?
\n部署的智能合约
\n// SPDX-Lincense-Identifier: MIT\npragma solidity ^0.8.11;\n\ncontract VendingMachine {\n address public owner;\n mapping(address => uint256) public donutBalances;\n\n constructor() {\n owner = msg.sender;\n donutBalances[address(this)] = 100;\n }\n\n function getVendingMachineBalance() public view returns (uint256) {\n return donutBalances[address(this)];\n }\n\n function restock(uint amount) public {\n require(msg.sender == owner, "Only the owner can restock this machine.");\n donutBalances[address(this)] += amount;\n }\n\n function purchase(uint amount) public payable {\n require(msg.sender == owner, "Only the owner can …Run Code Online (Sandbox Code Playgroud) 我正在尝试4.1.1在后端服务器中初始化 web3 版本,我正在尝试构建的应用程序提供了不需要客户拥有元掩码钱包的方面,相反,与区块链的任何交互都将使用应用程序的钱包(公司的)。
我在后端服务器中初始化 web3 实例时遇到困难。这是相关代码和错误:
const web3 = new Web3(process.env.INFURA_URL);
^
TypeError: Web3 is not a constructor
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我尝试在后端服务器中初始化 web3,以便与区块链的任何和所有交互都是使用应用程序的钱包完成的,从而消除了客户必须拥有钱包的需要。
web3js ×9
ethereum ×5
solidity ×3
blockchain ×2
javascript ×2
node.js ×2
opensea ×1
php ×1
reactjs ×1
solana ×1
solana-cli ×1
typescript ×1
webpack ×1