1

ブラウニー フレームワークと堅牢性を使用したスマート コントラクト開発に慣れています。まず、 を使用して、brownie consoleいくつかの標準的な OpenZeppelin トークン コントラクトをデプロイしました。

このページのように、ドキュメントからコードをコピーし、ブラウニーで動作するようにインポートを調整することでこれを行いました: https://docs.openzeppelin.com/contracts/3.x/erc777

ERC20 および ERC721 コントラクトでは正常に機能します。ただし、ERC777 は常に元に戻り、エラー メッセージのないトランザクションを表示します。トレース メソッドはデプロイ トランザクション用に実装されていないため、機能しません。

ERC777 トークンのコード (動作しない)

// contracts/GLDToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;

import "OpenZeppelin/openzeppelin-contracts@3.0.0/contracts/token/ERC777/ERC777.sol";

contract GLDToken is ERC777 {
    constructor(uint256 initialSupply, address[] memory defaultOperators)
        public
        ERC777("Gold", "GLD", defaultOperators)
    {
        _mint(msg.sender, initialSupply, "", "");
    }
}

ERC20トークンのコード(ワーキング)

// contracts/TestToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;

import "OpenZeppelin/openzeppelin-contracts@3.0.0/contracts/token/ERC20/ERC20.sol";

contract TestToken is ERC20 {
    constructor(uint256 initialSupply) public ERC20("Gold", "GLD") {
        _mint(msg.sender, initialSupply);
    }
}

Brownie コンソールでの出力

>>> t1 = TestToken.deploy(1e21, {'from': accounts[0]})
Transaction sent: 0x33de3fadb7ccf2dd8b3841365ad88190c3486a803f6ea30c04ef8c0111ec9cbd
  Gas price: 0.0 gwei   Gas limit: 6721975   Nonce: 2
  TestToken.constructor confirmed   Block: 4   Gas used: 721166 (10.73%)
  TestToken deployed at: 0x8c81630387e9507739fCeB6cbB14Ea1Da11D2339

>>> t2 = GLDToken.deploy(1e21, [], {'from': accounts[1]})
Transaction sent: 0xca91d510e7a54099182fe218ff0ec55c62ccb06227afbe9d9497790e35776651
  Gas price: 0.0 gwei   Gas limit: 6721975   Nonce: 0
  GLDToken.constructor confirmed (reverted)   Block: 5   Gas used: 260948 (3.88%)

また、GLDToken の deploy 関数に 2 番目のパラメーターとして渡されるデフォルトのトークン オペレーターのリストに、(デプロイされたオペレーター コントラクトの) 有効なアドレスを入力しようとしました。残念ながら違いはありませんでした。

デプロイ機能ですべての可能性を使い果たしましたが、それ以上のデバッグ情報は得られません。誰かが同様の問題を経験したことがありますか、またはこれをさらにデバッグする方法を知っていますか? どんな助けでも大歓迎です!

4

0 に答える 0