개발/BlockChain

    [BlockChain] gasPrice 상승 이슈

    트랜잭션의 수수료는 gas의 가격과 사용된 gas를 기반으로 계산을 한다. 트랜잭션 type1의 경우에는 gasPrice * gasLimit 으로 수수료가 결정된다. 전에 사용하던 네트워크는 충분한 거래가 이루어지고 블록이 있다보니까 gasPrice의 가격이 안정화 되어있었기 때문에 gasPrice에 대한 이슈가 없었다. 새로 네트워크 생성 후 gasPrice를 기존의 2배로 여유를 주고 트랜잭션을 날릴때마다 gasPrice가 계속 올라갔다. ethereum 공식문서를 찾아보니 gasPrice는 마지막 100개 블록의 중간값으로 결정한다고 한다. 그래서 네트워크의 최소 gasPrice를 1gwei로 설정하고 트랜잭션을 날릴때 gasPrice는 1gwei로 고정하고 사용했다. estimateGas를 통해서..

    [Blockchain] Klaytn WebSocket 끊김 후 재연결 (spring boot)

    Klaytn에서 WebSocket을 연결하여 스마트컨트랙트에서 발생하는 이벤트를 구독하려고 했다. 문제는 웹소켓 연결이 시간이 지나면 계속 끊겼다. 이 문제를 정의하고 해결하려고 한다. 1. 문제 1분간 별도의 request가 없으면 끊긴다. 클레이튼 데브포럼에서 클레이튼 팀에서 직접 단 댓글이다. 하지만 나는 1분간 별도의 request가 없어도 정상적으로 연결되다가 몇 시간 후에 갑자기 끊겨 버린다. 21년 6월에 작성한 글이라 오래되서 뭔가 바꼈나 하고 다시 찾아봤다. 그랬더니 위와 같이 최근에도 같은 답변이 있었다. 주기적으로 getblocknumber를 호출하는 방법보다 더 효율적인 방법을 찾고 싶었다. 그래서 WebSocketService의 connect가 끊겼을때를 감지해서 다시 connec..

    [Blockchain] 언어별 web3 차이로 트랜잭션 해시값 차이

    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값 동시성 해결

    트랜잭션을 보낼때 논스값이 같은 경우가 생겨서 이를 해결하려고 한다. 기존 코드 EthGetTransactionCount ethGetTransactionCount = web3jHttpRpc.ethGetTransactionCount( PUBLIC_KEY, DefaultBlockParameterName.PENDING ).send(); BigInteger nonce = ethGetTransactionCount.getTransactionCount(); 블록체인과 통신하는 과정이 비동기 처리로 되다보니 논스값을 받아 트랜잭션을 보내는 부분을 for문으로 처리했다가 nonce값이 같은 트랜잭션을 보내는 경우가 생겼다. 동시성 해결 코드 (1) nonce를 받아오는 부분만 동기처리 private static BigI..

    [BlockChain] EIP 55란?

    EIP55란 이더리움 지갑주소의 일부를 대문자화하여 구버전과 호환되는 이더리움 주소 체크섬을 제공한다. 일반 이더리움 주소 0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9 EIP-55 적용한 주소 0x001d3F1ef827552Ae1114027BD3ECF1f086bA0F9 일반 이더리움 주소와 비교해보면 대소문자 차이만 있는것으로 확인할 수 있다. EIP 적용 방법 일반 이더리움 주소에서 0x를 제외한 값을 keccak256 함수로 해시값을 얻는다. 만약 해시값이 16진수로 8보다 크다면 그 자리를 대문자로 바꿔준다. Addr : 001d3f1ef827552ae1114027bd3ecf1f086ba0f9 Hash : 23a69c1653e4ebbb619b0b2cb8a9bad498..

    [BlockChain] 코인과 토큰의 차이

    1. 코인 코인은 비트코인과 같이 단독적이고 독립적인 블록체인을 갖는 암호화페를 일컫는다. 예를들면 비트코인, 이더리움, 리플 등이 있다. 이 암호화폐들은 네트워크가 넓으며 특정 목적을 달성하도록 디자인된다. 예를 들어 비트코인은 안전한 고정 통화 정책하에 검열에 저항하는 가치의 저장고이자 교환의 수단으로 존재한다. 코인은 보통 과거의 기술이나 다른 암호화폐에서 영감을 얻어 특정 목적에 맞는 하나의 혁신적인 네트워크로 융합한다. 코인의 또다른 예인 이더리움은 탈중앙화된 블록체인에서 실행되는 범용 컴퓨터 프로그램을 만들기 위한 스마트 계약 플랫폼이다. 이더리움은 금융 데이터 보다는 게임부터 소셜 미디어까지 임의적인 프로그램 데이터에 집중한다. 이더리움은 자산을 전송,수령,관리하거나 가스비 등을 지불하는데 ..