Ich habe ein Problem bei der Übertragung des Besitzes eines ERC721-Tokens auf einen bereitgestellten Holding-Vertrag.
Der Fehler, den ich beim Ausführen erhalte, truffle test
ist der folgende: Error: sender account not recognized
Beim Aufrufen der transferFrom()
Funktion für den ERC721-Vertrag unter Verwendung des bereitgestellten Holding-Vertrags.
Ich habe den Holding-Vertrag vor dem Anruf erfolgreich genehmigt, transferFrom()
das ist also nicht das Problem, aber ich weiß nicht, wo der Fehler beim Versuch liegt, die NFT auf den Holding-Vertrag zu übertragen.
Die Verträge und die Testdatei befinden sich hier: https://github.com/sharad-s/DAOjo
Die spezifische Codezeile, die diesen Fehler in meinen Tests verursacht, ist Zeile 120 vonDAOjo/test/test.js
So reproduzieren Sie diesen Fehler:
truffle test
im Stammverzeichnis dieses Repositorys ausEs folgt der Fehler-Stack-Trace:
Contract: Crowdsale
DAOToken
1e+23
✓ should have a total supply of: 1e+23
✓ should have transferred 1e+23 to Crowdsale
Crowdsale
Wei Raised: 1000000000000000000
Buyer Balance: 1000000000000000000
✓ should accept ETH payments (144ms)
Contract: NFTTokenMetaDataEnumerableMock
NFT Registry
✓ Should have a total of 0 tokens when created
NFT APPROVED FOR: 0x3a0a837952964bdf3e751ba838e04b9a1752d94a
HOUSE OWNER: 0x6e4679ddb735556a47dd548489dfab641752afd5
SPV: 0x3a0a837952964bdf3e751ba838e04b9a1752d94a
DAO TOKEN BALANCE OF BUYER 1: BigNumber { s: 1, e: 3, c: [ 1000 ] }
1) Should approve and transfer token to SPV contract
Events emitted during test:
---------------------------
Transfer(from: <indexed>, to: <indexed>, value: 1000)
Transfer(from: <indexed>, to: <indexed>, value: 1000)
Transfer(from: <indexed>, to: <indexed>, value: 1000)
Transfer(from: <indexed>, to: <indexed>, value: 0)
Approval(owner: <indexed>, spender: <indexed>, value: 0)
---------------------------
4 passing (3s)
1 failing
1) Contract: NFTTokenMetaDataEnumerableMock
NFT Registry
Should approve and transfer token to SPV contract:
Error: sender account not recognized
at Object.InvalidResponse (/Users/sharad/.nvm/versions/node/v8.9.4/lib/node_modules/truffle/build/webpack:/~/web3/lib/web3/errors.js:38:1)
at /Users/sharad/.nvm/versions/node/v8.9.4/lib/node_modules/truffle/build/webpack:/~/web3/lib/web3/requestmanager.js:86:1
at /Users/sharad/.nvm/versions/node/v8.9.4/lib/node_modules/truffle/build/webpack:/packages/truffle-provider/wrapper.js:134:1
at XMLHttpRequest.request.onreadystatechange (/Users/sharad/.nvm/versions/node/v8.9.4/lib/node_modules/truffle/build/webpack:/~/web3/lib/web3/httpprovider.js:128:1)
at XMLHttpRequestEventTarget.dispatchEvent (/Users/sharad/.nvm/versions/node/v8.9.4/lib/node_modules/truffle/build/webpack:/~/xhr2/lib/xhr2.js:64:1)
at XMLHttpRequest._setReadyState (/Users/sharad/.nvm/versions/node/v8.9.4/lib/node_modules/truffle/build/webpack:/~/xhr2/lib/xhr2.js:354:1)
at XMLHttpRequest._onHttpResponseEnd (/Users/sharad/.nvm/versions/node/v8.9.4/lib/node_modules/truffle/build/webpack:/~/xhr2/lib/xhr2.js:509:1)
at IncomingMessage.<anonymous> (/Users/sharad/.nvm/versions/node/v8.9.4/lib/node_modules/truffle/build/webpack:/~/xhr2/lib/xhr2.js:469:1)
at endReadableNT (_stream_readable.js:1055:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
Danke schön!
Sie können Transaktionen nur from
an ein Konto senden, für das Ihr Node (in diesem Fall Ganache) den privaten Schlüssel kennt. In diesem Code:
const transferFrom = await _HouseNFTRegistry.transferFrom(
houseOwner,
_spvHoldingCrowdsale.address,
1,
{ from: _spvHoldingCrowdsale.address, to: _HouseNFTRegistry.address }
);
Sie versuchen, eine Transaktion von der Adresse eines Vertrags zu senden, was nicht möglich ist. (Niemand kennt den privaten Schlüssel für diese Adresse.)
Scharad S.