Given value "TxTypeLegacyTransaction" is not a valid hex string

컨트랙트 배포과정에서 오류가 발생했습니다.

이더리움 배포시에는 오류가 없던 코드인데, 어디서 오류가 발생하는 걸까요…? ㅜㅜ

다음은 Migrations.sol 입니다.

pragma solidity ^0.5.16;

contract Migrations {

address public owner;

uint public last_completed_migration;

constructor() public {

    owner = msg.sender;

}

modifier restricted() {

    if (msg.sender == owner) _;

}

function setCompleted(uint completed) public restricted {

    last_completed_migration = completed;

}

function upgrade(address new_address) public restricted {

    Migrations upgraded = Migrations(new_address);

    upgraded.setCompleted(last_completed_migration);

}

}

안녕하세요,
클레이튼에 관심가져주셔서 감사합니다.

truffle-hdwallet-provider-klaytn을 다음 버전으로 변경 후 시도해 보실 수 있을까요?

node v10인 경우

yarn add truffle-hdwallet-provider-klaytn@1.0.18

node v12이상인 경우

yarn add truffle-hdwallet-provider-klaytn@1.4.1

같은 오류가 계속 납니다…ㅠㅠ
공식문서에 있는 강의를 따라서 하고있고, truffle-config.js 만 변경해서 진행하고 있습니다.

const HDWalletProvider = require(“truffle-hdwallet-provider-klaytn”);

const privateKey = "0x~~ ";

module.exports = {
networks: {
development: {
host: “localhost”,
port: 8545,
network_id: “*” // Match any network id
},
testnet: {
provider: () => new HDWalletProvider(privateKey, “https://api.baobab.klaytn.net:8651”),
network_id: ‘1001’, //Klaytn baobab testnet’s network id
gas: ‘8500000’,
gasPrice: null
},
mainnet: {
provider: () => new HDWalletProvider(privateKey, “https://api.cypress.klaytn.net:8651”),
network_id: ‘8217’, //Klaytn mainnet’s network id
gas: ‘8500000’,
gasPrice: null
}
}
};

truffle deploy --network testnet 에서 진도가 더 나가질 않습니다…

안녕하세요, 첫 글에서 주신 캡쳐내용을 보면 web3에서 클레이튼 트랜잭션을 분석하다가 에러가 난 것으로 보입니다.

관련하여 아래 두 가지 정보를 주실 수 있으실까요?

  1. 사용하고 계신 truffle 버전
  2. 강의를 따라하고 계시다던데, 어떤 강의인지
  3. 가능하시다면 해당 부분 코드를 제공해주시면 더 도움이 될 것 같습니다. 현재 스크린샷에서는 backtrace 결과가 잘려있어 코드에서는 어느 부분이 문제였는지 확인하기 어렵습니다.

저도 동일한 에러가 떠서 문의 드리고자 합니다
inflearn에 올라와있는 nft 토큰 만드는 유료강의를 따라 진행하고 있는데요

node v10.9.0 버전이며
node 10 버전에 맞는truffle-hdwallet-provider-klaytn@1.0.18을 설치하였고
truffle 버전은 v5.4.7(core:5.4.7) 입니다 아래는 에러메세지 전체를 캡처한 것입니다

keryl@DESKTOP-2DOUA4I MINGW64 /d/ws/arzone/youtubeThumbnail/crypto-ytt-starter (master)
$ truffle migrate --compile-all --reset --network klaytn

Compiling your contracts…

Compiling .\contracts\Migrations.sol
Compiling .\contracts\TokenSales.sol
Compiling .\contracts\YouTubeThumbnailToken.sol
Compiling openzeppelin-solidity\contracts\GSN\Context.sol
Compiling openzeppelin-solidity\contracts\drafts\Counters.sol
Compiling openzeppelin-solidity\contracts\introspection\ERC165.sol
Compiling openzeppelin-solidity\contracts\introspection\IERC165.sol
Compiling openzeppelin-solidity\contracts\math\SafeMath.sol
Compiling openzeppelin-solidity\contracts\token\ERC721\ERC721.sol
Compiling openzeppelin-solidity\contracts\token\ERC721\ERC721Enumerable.sol
Compiling openzeppelin-solidity\contracts\token\ERC721\ERC721Full.sol
Compiling openzeppelin-solidity\contracts\token\ERC721\ERC721Metadata.sol
Compiling openzeppelin-solidity\contracts\token\ERC721\IERC721.sol
Compiling openzeppelin-solidity\contracts\token\ERC721\IERC721Enumerable.sol
Compiling openzeppelin-solidity\contracts\token\ERC721\IERC721Metadata.sol
Compiling openzeppelin-solidity\contracts\token\ERC721\IERC721Receiver.sol
Compiling openzeppelin-solidity\contracts\utils\Address.sol
Artifacts written to D:\ws\arzone\youtubeThumbnail\crypto-ytt-starter\build\contracts
Compiled successfully using:

  • solc: 0.5.16+commit.9c3226ce.Emscripten.clang

Starting migrations…

Network name: ‘klaytn’
Network id: 1001
Block gas limit: 0 (0x0)

1_initial_migration.js

Deploying ‘Migrations’

transaction hash: 0xb8e1f34c7e6d37b9209da9f8d632aa941c662ed2757c2fe23df1012538dc0858
⠴ Blocks: 0 Seconds: 0
Error: Given value “TxTypeLegacyTransaction” is not a valid hex string.
at Object.hexToNumber (C:\ProgramData\nvm\v10.9.0\node_modules\truffle\build\webpack:\node_modules\web3-utils\lib\utils.js:205:1)
at Method.outputTransactionFormatter (C:\ProgramData\nvm\v10.9.0\node_modules\truffle\build\webpack:\node_modules\web3-core-helpers\lib\formatters.js:214:1)
at Method.web3.eth.getTransaction.method.outputFormatter (C:\ProgramData\nvm\v10.9.0\node_modules\truffle\build\webpack:\packages\interface-adapter\dist\shim\overloads\ethereum.js:52:1)
at Method.formatOutput (C:\ProgramData\nvm\v10.9.0\node_modules\truffle\build\webpack:\node_modules\web3-eth\node_modules\web3-core-method\lib\index.js:146:1)
at sendTxCallback (C:\ProgramData\nvm\v10.9.0\node_modules\truffle\build\webpack:\node_modules\web3-eth\node_modules\web3-core-method\lib\index.js:522:1)
at C:\ProgramData\nvm\v10.9.0\node_modules\truffle\build\webpack:\node_modules\web3\node_modules\web3-core-requestmanager\lib\index.js:307:1
at finished (D:\ws\arzone\youtubeThumbnail\crypto-ytt-starter\node_modules\truffle-hdwallet-provider-klaytn\dist\webpack:\truffle-hdwallet-provider\node_modules\web3-provider-engine\index.js:152:9)
at apply (D:\ws\arzone\youtubeThumbnail\crypto-ytt-starter\node_modules\truffle-hdwallet-provider-klaytn\dist\webpack:\truffle-hdwallet-provider\node_modules\async\internal\once.js:12:16)
at callback (D:\ws\arzone\youtubeThumbnail\crypto-ytt-starter\node_modules\truffle-hdwallet-provider-klaytn\dist\webpack:\truffle-hdwallet-provider\node_modules\async\internal\eachOfLimit.js:61:25)
at replenish (D:\ws\arzone\youtubeThumbnail\crypto-ytt-starter\node_modules\truffle-hdwallet-provider-klaytn\dist\webpack:\truffle-hdwallet-provider\node_modules\async\internal\eachOfLimit.js:71:9)
at t.default (D:\ws\arzone\youtubeThumbnail\crypto-ytt-starter\node_modules\truffle-hdwallet-provider-klaytn\dist\webpack:\truffle-hdwallet-provider\node_modules\async\eachLimit.js:43:3)
at fn (D:\ws\arzone\youtubeThumbnail\crypto-ytt-starter\node_modules\truffle-hdwallet-provider-klaytn\dist\webpack:\truffle-hdwallet-provider\node_modules\async\internal\doLimit.js:9:16)
at eachSeries (D:\ws\arzone\youtubeThumbnail\crypto-ytt-starter\node_modules\truffle-hdwallet-provider-klaytn\dist\webpack:\truffle-hdwallet-provider\node_modules\web3-provider-engine\index.js:127:5)
at end (D:\ws\arzone\youtubeThumbnail\crypto-ytt-starter\node_modules\truffle-hdwallet-provider-klaytn\dist\webpack:\truffle-hdwallet-provider\src\subproviders\provider.js:19:5)
at t.callback [as onreadystatechange] (D:\ws\arzone\youtubeThumbnail\crypto-ytt-starter\node_modules\truffle-hdwallet-provider-klaytn\dist\webpack:\truffle-hdwallet-provider\node_modules\caver-js\packages\caver-core-requestmanager\caver-providers-http\src\index.js:119:13)
at t.call [as dispatchEvent] (D:\ws\arzone\youtubeThumbnail\crypto-ytt-starter\node_modules\truffle-hdwallet-provider-klaytn\dist\webpack:\truffle-hdwallet-provider\node_modules\xhr2-cookies\dist\xml-http-request-event-target.js:34:22)
Truffle v5.4.7 (core: 5.4.7)
Node v10.9.0

1 Like

안녕하세요, 해당 에러는 코드를 좀 살펴봐야 할 것 같긴 합니다만,

기본적으로 web3를 사용하시면서 "TxTypeLegacyTransaction"을 쓰신 것 같습니다.

web3는 이더리움의 SDK이므로, 클레이튼 트랜잭션 타입들을 지원하지 않습니다.

caver로 변경해서 사용하시면 될텐데, 트러플에서 그렇게 하기 어렵다면 이더리움의 트랜잭션 형태로

작성을 하시길 권장드립니다. 클레이튼은 이더리움 트랜잭션과도 호환되도록 구현되어있기 때문에

그렇게 하셔도 무방합니다.

관련 코드가 없어서 이정도 추측성 설명을 드릴 수 밖에 없다는 점 양해 부탁드립니다.

감사합니다.

추가적으로, truffle을 이용한 빌드는 아래 코드 리포를 참고 부탁드리겠습니다.