해결된 질문
작성
·
384
1
답변 2
1
너무 감사합니다.
저도 구글 검색을 통해 여러가지를 시도해봤는데 위 가이드로 다시 시도해보겠습니다.
제가 찾은 답은 "ethereumjs-tx": "^1.3.7", 버전을 내리는 거 였습니다.
버전을 내리고 소스 수정하니 동작하네요.. 답변 너무 너무 감사합니다. 알려주신 방법으로도 다시 해보겠습니다.
감사합니다.
네 저도 버전을 내리는건 바람직하지 못하다고 생각합니다. 하도 안되서 구글링을 통해 찾은 답이 내리는거라 해본거에요 알려주신 내용으로도 작업을 했어나 동일한 오류가ㅜ발생되어 몇일 더 해봐야할거 같네요..
주말에 하이퍼레저 베수 세팅하느라 더 자세히 하지 못했네요. 선생님의 판테온강의 최고네요!! 판테온 강의 다 보고 베수 세팅 다 했습니다.이제 디앱 트랜잭션 발생하면 실습이 완료 될고 같아요 😀😀
감사합니다
1
Geth에 직접 테스트하려면 코드를 변경해야 할 것 같습니다. 일단 서버측에서 서명할 때 서명 개인키를 확인해보시고... setTx 에 const privateKey = Buffer.from(...) 부분입니다.
가나슈는 개발용이라서 그런지 모르겠는데 트랜잭션 정보가 부실(?)해도 그냥 처리되는 것 같습니다. 😅 그래서 다음과 같이 변경해줘야 할 듯 싶습니다.
우선 ethereumjs-common 패키지를 설치합니다(deprecated된 패키지이지만 강좌가 만들어진 시점을 기준으로 하겠습니다).
https://www.npmjs.com/package/ethereumjs-common
그리고 eth.controller.js 에 있는 const tx = new ethTx(txObject); 부분을 다음과 같이 수정합니다.
const Common = require('ethereumjs-common').default;
...
const local = Common.forCustomChain(
'mainnet',
{
name: 'local',
networkId: 444,
chainId: 444
},
'petersburg'
)
const tx = new ethTx(txObject, {common: local});
전체 소스는 다음 링크를 참조하세요.
https://gist.github.com/swkim109/e3fcdb45cf19aa9c16d9c2ec60a0bb5e
버전을 내리는 것은 바람직하지 않습니다. 이더리움은 주기적으로 하드포크되면서 변경되는 부분들이 생깁니다. ethereumjs도 이렇게 변경된 것들을 반영하여 업그레이드가 되는데 계속 이전 버전을 쓸 수는 없습니다. ethereumjs는 패키지명이 @ethereumjs로 바뀌고 버전이 3.x.x까지 올라간 상태입니다.
다른 라이브러리도 마찬가지 입니다. 이더리움 트랜잭션 부분도 변경 사항이 생기고 그에 따라서 트랜잭션을 생성해줄 때도 그런 점들을 반영해주어야 할 겁니다.