[Blockchain] Klaytn WebSocket 끊김 후 재연결 (spring boot)
·
개발/BlockChain
Klaytn에서 WebSocket을 연결하여 스마트컨트랙트에서 발생하는 이벤트를 구독하려고 했다. 문제는 웹소켓 연결이 시간이 지나면 계속 끊겼다. 이 문제를 정의하고 해결하려고 한다. 1. 문제 1분간 별도의 request가 없으면 끊긴다. 클레이튼 데브포럼에서 클레이튼 팀에서 직접 단 댓글이다. 하지만 나는 1분간 별도의 request가 없어도 정상적으로 연결되다가 몇 시간 후에 갑자기 끊겨 버린다. 21년 6월에 작성한 글이라 오래되서 뭔가 바꼈나 하고 다시 찾아봤다. 그랬더니 위와 같이 최근에도 같은 답변이 있었다. 주기적으로 getblocknumber를 호출하는 방법보다 더 효율적인 방법을 찾고 싶었다. 그래서 WebSocketService의 connect가 끊겼을때를 감지해서 다시 connec..
[Blockchain] 언어별 web3 차이로 트랜잭션 해시값 차이
·
개발/BlockChain
1. 문제 및 해결 클라이언트(flutter)에서 트랜잭션 사인 -> 백엔드(nodejs)에서 트랜잭션 해시값 send 위 과정에서 evm에 트랜잭션을 보내는 처리가 실패했다. 처음엔 flutter에서 트랜잭션을 잘못 생성했다고 생각하여 abi등 꼼꼼하게 확인했지만 이상이 없었다. 문제는 type2 트랜잭션의 문제였다. evm 트랜잭션의 타입 (1) type1 gas price를 설정하여 네트워크가 바쁠때는 높은 gas price부터 빠르게 처리한다. 트랜잭션 예시(nodejs) const tx = { to: to, value: parsedEthAmount, gasPrice: ethers.utils.parseUnits("20", "gwei"), gasLimit: ethers.utils.parseUnits..
[Blockchain] web3j 에서 nonce값 동시성 해결
·
개발/BlockChain
트랜잭션을 보낼때 논스값이 같은 경우가 생겨서 이를 해결하려고 한다. 기존 코드 EthGetTransactionCount ethGetTransactionCount = web3jHttpRpc.ethGetTransactionCount( PUBLIC_KEY, DefaultBlockParameterName.PENDING ).send(); BigInteger nonce = ethGetTransactionCount.getTransactionCount(); 블록체인과 통신하는 과정이 비동기 처리로 되다보니 논스값을 받아 트랜잭션을 보내는 부분을 for문으로 처리했다가 nonce값이 같은 트랜잭션을 보내는 경우가 생겼다. 동시성 해결 코드 (1) nonce를 받아오는 부분만 동기처리 private static BigI..
[BlockChain] EIP 55란?
·
개발/BlockChain
EIP55란 이더리움 지갑주소의 일부를 대문자화하여 구버전과 호환되는 이더리움 주소 체크섬을 제공한다. 일반 이더리움 주소 0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9 EIP-55 적용한 주소 0x001d3F1ef827552Ae1114027BD3ECF1f086bA0F9 일반 이더리움 주소와 비교해보면 대소문자 차이만 있는것으로 확인할 수 있다. EIP 적용 방법 일반 이더리움 주소에서 0x를 제외한 값을 keccak256 함수로 해시값을 얻는다. 만약 해시값이 16진수로 8보다 크다면 그 자리를 대문자로 바꿔준다. Addr : 001d3f1ef827552ae1114027bd3ecf1f086ba0f9 Hash : 23a69c1653e4ebbb619b0b2cb8a9bad498..
[BlockChain] 코인과 토큰의 차이
·
개발/BlockChain
1. 코인 코인은 비트코인과 같이 단독적이고 독립적인 블록체인을 갖는 암호화페를 일컫는다. 예를들면 비트코인, 이더리움, 리플 등이 있다. 이 암호화폐들은 네트워크가 넓으며 특정 목적을 달성하도록 디자인된다. 예를 들어 비트코인은 안전한 고정 통화 정책하에 검열에 저항하는 가치의 저장고이자 교환의 수단으로 존재한다. 코인은 보통 과거의 기술이나 다른 암호화폐에서 영감을 얻어 특정 목적에 맞는 하나의 혁신적인 네트워크로 융합한다. 코인의 또다른 예인 이더리움은 탈중앙화된 블록체인에서 실행되는 범용 컴퓨터 프로그램을 만들기 위한 스마트 계약 플랫폼이다. 이더리움은 금융 데이터 보다는 게임부터 소셜 미디어까지 임의적인 프로그램 데이터에 집중한다. 이더리움은 자산을 전송,수령,관리하거나 가스비 등을 지불하는데 ..
[BlockChain] 블록체인의 트릴레마
·
개발/BlockChain
1. 블록체인의 트릴레마란? 트릴레마란 세가지 목표 가운데 두가지 목표는 동시에 해결할 수 있지만 세가지 목표를 한꺼번에 해결할 수 없는 문제를 뜻한다. 블록체인 트릴레마라고 했을때는 확장성, 탈중앙화, 보안성이라는 블록체인의 세 가지 근본 가치를 동시에 달성하기 매우 어려움을 뜻한다. 확장성이란 블록체인이 얼마나 많은 트랜잭션을 얼마나 빠르게 처리하는지, 탈중앙화는 특정 집단이 통제하는것이 아닌 서로 다른 개별 참여자들이 합의를 통해 네트워크를 운영 및 관리할수 있는지, 보안성은 네트워크에 대한 공격으로부터 블록체인에 기록된 정보 및 자산을 안전하게 지킬수 있는지이다. 2. 각 요소의 장단점 (1) 확장성 장점 단점 네트워크가 많은 양의 트랜잭션을 지원할 수 있도록 함 보안을 희생해야 함 보안이 주요 ..