小编Jas*_*ran的帖子

ethers.js 合约实例中没有 safeTransferFrom 函数?

我在安全帽控制台中创建了一个合约实例,如下所示:

\n
const contract_fac = await ethers.getContractFactory("ContractName");\nconst contract = await contract_fac.attach("CONTRACTADDR...");\n
Run Code Online (Sandbox Code Playgroud)\n

合约对象具有除 之外的所有公共/外部函数safeTransferFrom。为什么?

\n

当我用它调用它时,它contract.safeTransferFrom(\xe2\x80\xa6)会抛出 JavaScript 错误 \xe2\x80\x9csafeTransferFrom 不是函数\xe2\x80\x9d。这是一个错误还是我不明白什么?safeTransferFrom函数在 ABI 中列出。

\n

我使用未做任何更改的 OpenZeppelin (v. 4.2) 721 令牌模板、Ethers.js (v. 5.4.1) 和 Hardhat (v. 2.4.1)。

\n

更新: \n问题已解决。safeTransferFrom 是一个重载函数。在 ethers 中,调用重载合约函数的语法与非重载函数不同。\n Ethers.js doc

\n

错误的:

\n
contract.safeTransferFrom(addr1, addr2, 1);\n
Run Code Online (Sandbox Code Playgroud)\n

正确的:

\n
contract["safeTransferFrom(address,address,uint256)"](addr1, addr2, 1);\n
Run Code Online (Sandbox Code Playgroud)\n

ethereum solidity openzeppelin ethers.js hardhat

28
推荐指数
1
解决办法
5233
查看次数

Ethers.js“错误:未知帐户#0(操作=“getAddress”,代码= UNSUPPORTED_OPERATION)”

我尝试使用 Ethers.js 从 KyberSwap 获取 ETH 的价格,但收到以下错误:

Error: unknown account #0 (operation="getAddress", code=UNSUPPORTED_OPERATION, version=providers/5.5.3)
Run Code Online (Sandbox Code Playgroud)

我已连接到 Infura Web 套接字来获取数据。这是我的脚本:

Error: unknown account #0 (operation="getAddress", code=UNSUPPORTED_OPERATION, version=providers/5.5.3)
Run Code Online (Sandbox Code Playgroud)

我该如何修复这个错误?

ethereum ethers.js hardhat

13
推荐指数
2
解决办法
1万
查看次数

Mockito 测试 java 8 lambda 消费者 API

我需要测试一个使用另一个接口作为与 lambda 使用者的依赖注入的类。

@Builder
public class Interactor {

    private final Gateway gateway;

    void process(String message, Consumer<String> response){
        gateway.process(message, uuid -> {
            response.accept(uuid.toString());
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

依赖项定义如下:

public interface Gateway {

    void process(String message, Consumer<UUID> uuid);
}
Run Code Online (Sandbox Code Playgroud)

我将如何模拟网关,以便为我的测试提供 UUID 值响应?

这是我迄今为止尝试过的:

@Test
void whillReturnTheInjectedUUIDValueTest() {

    UUID uuid = UUID.randomUUID();

    Gateway gateway = Mockito.mock(Gateway.class);
    Mockito.when(gateway.process("ignored", uuid1 -> {return uuid;}));

    Interactor.builder().gateway(gateway).build().process("ignored", s -> {
        Assertions.assertEquals(uuid.toString(), s);
    });
}
Run Code Online (Sandbox Code Playgroud)

我应该如何向消费者提供返回值?

java lambda junit mockito

7
推荐指数
1
解决办法
4239
查看次数

对象作为 React 子对象无效(找到:带有键 {} 的对象)。如果您打算渲染子集合,请使用数组

我是反应新手。如果有人能解释这个问题那就太好了。这个问题已经有了答案,但我仍然很困惑。

import React from 'react' ; 
import Card from './Card.js';
const CardList = ({Friends}) =>{
    const Cardcomponent = Friends.map((user , i) => {
        return(
            <div>
                 <Card id={Friends[i].id} name={Friends[i].name} username={Friends[i].username} instagram={Friends[i].instagram}  />
            </div>
              )
    })
return(
          <div>
                {Cardcomponent}
          </div>
      )
} 
export default CardList ;
Run Code Online (Sandbox Code Playgroud)

我收到错误:“对象作为 React 子项无效(找到:带有键 {} 的对象)。如果您打算渲染子项集合,请改用数组。”

reactjs react-native react-redux

7
推荐指数
1
解决办法
2万
查看次数

使用 Ethers.js 检查 Hardhat 中的 ERC20 代币余额

我正在使用 Hardhat 的主网分支编写单元测试,对于测试,我想检查ownerERC20 代币(特别是 DAI)账户的初始余额。这是我到目前为止的测试:

const { ethers } = require("hardhat");

describe("Simple Test", function () {
    it("Check balance of DAI", async function () {
        const provider = ethers.provider;
        const [owner] = await ethers.getSigners();

        // Want to get initial DAI balance here so it can be compared later
    });
});
Run Code Online (Sandbox Code Playgroud)

有什么简单的方法可以做到这一点?

ethereum erc20 ethers.js hardhat

7
推荐指数
1
解决办法
6628
查看次数

Brave浏览器如何关闭地址栏中的自动提示

当我输入网址时,Brave 会建议非常愚蠢的网站。示例:当我只输入“mu”时,它会建议“elmundo.es”。如果我输入“po”,它会建议“huffingtonpost.com”

我从未访问过这些网站,它不在我的书签中,我的历史记录已 100% 清除,并且有关“预测服务”的两个设置均已关闭。我已经重新启动了浏览器。

这个功能非常非常烦人。我可以安装一个扩展来删除此自动建议,还是我是唯一一个对此感到生气的人???:-)。除此之外,Brave 浏览器似乎是一个不错的选择。

提前致谢

乔纳斯M

browser autocomplete autosuggest brave

6
推荐指数
1
解决办法
5661
查看次数

在 Eclipse 中调试:检查变量 -&gt; 评估期间的错误

我正在编写一段 Java 代码,但遇到转储问题。我正在进行一些调试,由于某种原因,当我尝试评估(观察或检查)方法内声明的某些变量时,它显示以下错误:

errors during the evaluation.
Run Code Online (Sandbox Code Playgroud)

我不明白。我正在使用 Eclipse 3.7。

例如,它甚至对方法参数也执行相同的操作(在方法执行结束之前应该可用)。

我的eclipse.ini文件是:

-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
1024M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx1024M
Run Code Online (Sandbox Code Playgroud)

java eclipse debugging

5
推荐指数
1
解决办法
7024
查看次数

Eclipse IDE 调试 - 代码未反映新更改

我正在使用 Eclipse IDE (4.2)。当我在 Eclipse 中进行更改并尝试调试它时,会编译以前的版本,但不会编译新版本。为了解决这个问题,我执行 maven clean/build,然后刷新项目。但这非常繁琐,每次进行更改时都需要这样做。有没有其他方法可以解决这个问题,或者我可以使用一个插件来自动获取这些更改?

java eclipse eclipse-juno

5
推荐指数
1
解决办法
1万
查看次数

当父级缩小时 JTextArea 不换行

我正在创建一个显示消息聊天日志的 Java Swing 应用程序。该帧仅包含 a ,JScrollPane其中有一个VerticalLayout,并且其中有无限数量的JTextAreas,每条消息一个。sJTextArea是不可编辑的,我使用它们而不是 a 的唯一原因JLabel是我需要换行文本。

\n

作为测试,我创建了框架并添加了两条消息。

\n

文本区

\n

这按预期工作,组件形成连续的文本页面并环绕框架。

\n

然后我增加框架的大小。

\n

JTextArea 扩展

\n

这仍然按预期工作,JScrollPaneJTextAreas 已经扩展并且文本已经重新包装。

\n

然后我将窗口缩小到较小的尺寸。

\n

JTextArea 缩小了

\n

这没有按预期工作。保持JScrollPane其最大尺寸并且单词不会换行。我怎样才能做到当框架宽度方向缩小时,JScrollPaneJTextAreas 也会缩小?

\n

我已经尝试过的事情:

\n
    \n
  • 实例化JScrollPanewithJScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER
  • \n
  • 给每个JTextArea一个BoxLayoutBorderLayout
  • \n
  • 将每个包裹JTextArea在 a 中JPanel并给面板一个BoxLayoutorBorderLayout
  • \n
  • 重新验证/重新绘制JScrollPane调整大小事件
  • \n
  • 调整事件大小时调用setSize(Dimension d) …

java swing jscrollpane jtextarea

5
推荐指数
1
解决办法
986
查看次数

如何在测试之间重置 Hardhat 的主网分叉?

我正在使用 Hardhat 的主网分支在 Hardhat 中编写单元测试,但是一项测试的结果似乎会影响未来的测试并导致我的断言失败。我正在使用 Alchemy 和区块 #14189520 进行分叉。

例如:

it("Test 1", async function () {
    const provider = ethers.provider;
    const [owner, addr1] = await ethers.getSigners();

    // Assert owner has 1000 ETH to start
    ownerBalance = await provider.getBalance(owner.address);
    expectedBalance = ethers.BigNumber.from("10000000000000000000000");
    assert(ownerBalance.eq(expectedBalance));

    // Send 1 Ether to addr1
    sendEth(1, owner, addr1);
});

it("Test 2", async function () {
    const provider = ethers.provider;
    const [owner, addr1] = await ethers.getSigners();

    // ownerBalance is now only 999 Eth because of previous test
    ownerBalance …
Run Code Online (Sandbox Code Playgroud)

mocha.js ethereum ethers.js hardhat

5
推荐指数
1
解决办法
2834
查看次数