본문 바로가기

Blockchain

(28)
zokrates library 간단 사용기(template,signal) 들어가기에 앞서, zokrates란? zokrates는 Python기반의 ZKP 라이브러리로, privacy 보호와 더불어 컨트랙트의 보안을 강화하는데 사용된다. circom이라는 언어를 사용하여 작성된 스마트 컨트랙트를 처리한다. 1) remix에서 zokrates 라이브러리 설치 ㄴ오늘 remix에서 라이브러리를 처음 설치해보았다. 2) 예제 코드 python처럼 def 함수를 사용했다. zokrates에서는 field를 사용하여 circuit을 설계하고 계산을 수행한다. field는 circuit의 입력 출력 중간값으로 사용될 수 있다. def main(field a, field b) -> field { field result = a + b; return result; } a,b가 field값이며 ..
zkSNARKs란? (circom-zkSNARKs의 관계) * 해당 강의는 https://learn.0xparc.org/materials/circom/learning-group-1/circom-1 을 듣고 정리한 글입니다. Circom Workshop 1 | ZK Learning Resources Description learn.0xparc.org 함수 입력값 : x1,x2,x3,x4 OUT = f(x) = (x1+x2) * x3 - x4 여기서 zkSNARKs는 x1,x2,x3,x4 라는 비밀을 알고 있는데, OUT의 연산 결과에 필요한 값들이다. 위에서 튜플()의 값이 정확히 무엇인지 몰라도 결과값을 증명할 수 있다. 위에서 function의 input이 x1,x2,x3,x4 라고했고, OUT의 식이 OUT = f(x) = (x1+x2) * x3 - x4 로..
ZKP에 필요한 라이브러리 설치 (circom) ZKP 개발에 필요한 라이브러리 설치가 있었다. https://docs.circom.io/getting-started/installation/#important-deprecation-note 1) rustup 설치 curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh 설치 circom은 Rust로 쓰여진 ZKP 라이브러리이다. rust 언어가 컴파일 되려면 버전 관리 등의 관리 역할을 해주는 rustup 을 설치해주어야 한다고 한다. 위의 명령어는 macOS와 Linux에서 동작한다. +) 또한 circom 라이브러리를 사용하기 위해서는 node.js가 설치되어 있어야 하며 npm, yarn이 사용 가능해야 한다. rustup을 설치하게 되면 자..
Metamask 지갑 연결 에러 사용하고 있는 Admin 사이트에서 404에러가 뜨면서 메타마스크 지갑 연결이 계속 안되고 있는 상황이 발생했는데, 지갑 연결을 끊어주고 다시 연결하니 지갑 연결이 잘 되었다. 방법은 다음과 같다. 1) 크롬 개발자 도구 > Application > Local storage 2) 관련된 accessToken 모두 삭제 3) 지갑 다시 연결
fromBlock:0 주석처리 event service 파일 (subscribe 메소드 있고), fromBlock:0 부터 해서 블록체인 이벤트를 받아오는 service 파일에서 커밋할때 이 파일은 제외되어야 한다. 오늘 이 파일을 커밋에 넘겼다가 나중에 아차 싶어서 다시 revert 했다. 결론 fromBlock : 0 은 항상 주석처리 해서 커밋에 내보낼 것.
toWei()와 GWei()의 차이점 web3 utils 안에 들어있는 여러 라이브러리들을 보던 중에 toWei()와 GWei()를 보았다. 대충 이더리움과 관련된 무언가의 라이브러리이겠거니..? 하고 추측만 하고 정확하게 무슨 의미인지 다시 찾아보았다. 일단, 이더리움에서 sigendTx에 필요한 TransactionConfig의 요소로는 다음과 같다. export interface TransactionConfig { from?: string | number; to?: string; value?: number | string | BN; gas?: number | string; gasPrice:?: number | string | BN; maxPriorityFeePerGas?: number | string | BN; maxFeePerGas?..
There is no matching event handler defined in the remote service. Event pattern: agenda-raised - { stack: [ null ] } 이벤트 handler에서 rabbitMQ에 메시지를 쏘고 > 이벤트 handler에서 이를 작업하려고 하니 There is no matching event handler defined in the remote service. Event pattern: event payload 이름 - { stack: [ null ] }과 같은 에러가 발생하였다. 해결방법은 다음과 같았다. 1) rabbitMQ에서 Purge Messages를 한다. (큐를 비워준다) 2) Docker에서 Event listener,handler,db 등을 재실행한다. -> 그러면 handler에서 정상적으로 handler에서 블록체인 이벤트가 수신되는 것을 확인할 수 있다. OR 그냥 도커에서 listener,handler 등 재시작으로..
블록체인 이벤트 handler, listener 차이 블록체인 이벤트를 수신할때 event-handler와 event-listener 2가지 종류가 있다고 하자. 그렇다면 이 둘의 차이점은 무엇일까? event-listener : 온체인 상의 이벤트를 캐치하여 메시지 큐로 넘기기 위한 서비스 특정 이벤트가 발생했을때 실행되는 콜백함수로, 이벤트를 감지하고 처리하기 위해 listener을 구독하게 된다. event-handler : 메시지 큐로부터 받은 온체인 이벤트에 대한 비즈니스 로직을 처리하기 위한 서비스 이벤트가 발생하면 해당 이벤트에 대한 handler가 호출되어 실제 작업을 수행한다. listener를 먼저 구독(subscribe)하고 그 후에 handler를 통해 비즈니스 로직을 처리한다. * 우리 팀의 경우 메시지큐는 주로 RabbitMQ를 사..
finality란? klaytn은 비트코인,이더리움과 다르게 Lack of finality를 보완했다고 한다. 여기서 finality란 무엇일까? 이전에 finality에 대해 들어본 적이 있는데, 잘 모르겠어서 이참에 정리하고자 한다. finality에 대하여 사전 정의는 다음과 같다. '변경 불가능한 최후' '최종적임' 즉, 바꿀 수 없음을 뜻한다. 블록체인에서의 finality는 무엇일까? 암호화폐 트랜잭션(거래)이 완료된 후에 바뀌거나, 취소될 수 없음을 보장하는 것이다. 즉, 바뀔 수 없다. 블록체인의 지연속도 정도는, 궁극적으로 체인의 finality rate에 영향을 받는다. 왜냐하면, 완벽한 블록 트랜잭션임이 검증이 되어야 블록이 체인에 붙기 때문이다. 무작정 블록체인 네트워크에서 대기하게 되면, 비즈니스나 ..
생각해보기) Packet 그리고 Blockchain Node의 공통점과 차이점 안녕하세요. brandy 입니다 :) 이번에 IP(Internet Protocol)에 대해 다시 공부하면서 Blockchain Node와 닮아있는 점이 있는거 같은데?라고 생각하며 이 둘에 대해 다시 공부해보고 정리하는 시간을 가졌습니다. Internet Protocol = IP란? 인터넷은 URL을 포함한 request 요청을 보내는 Client와 request에 대한 대답을 해주는 Server로 구성되어 있습니다. (※ URL이란, 웹페이지,이미지,동영상 등 리소스를 식별하기 위한 주소) 그 중간에서 Client와 Server을 잇는 것이 바로 Internet 입니다. Internet은 여러 개의 Node들의 통신으로 이루어집니다. 그중에서도 Internet Node들이 통신하기 위한 약속을 바로 I..