ZooBC 위키
트랜잭션

트랜잭션 봉투

모든 ZooBC 트랜잭션은 유형과 상관없이 같은 구조를 가진 하나의 바이트 문자열이며, 이를 봉투(envelope)라고 합니다. 유형 고유의 데이터는 본문이라는 필드 하나에 들어가고, 나머지(누가 보내는지, 누가 받는지, 수수료, 시각, 선택적인 메시지)는 73개 유형이 모두 공유합니다. 봉투만 알면 어떤 트랜잭션이든 읽고, 가격을 매기고, 검사할 수 있습니다.

필드의 순서

유형부터 서명까지 필드를 순서대로 늘어놓은 띠로 그린 봉투이며, 그 위에 가스 한도와 체인 id가 지워져 있습니다
유형부터 서명까지 필드를 순서대로 늘어놓은 띠로 그린 봉투이며, 그 위에 가스 한도와 체인 id가 지워져 있습니다
필드크기비고
유형4바이트, 리틀엔디언[[transactions트랜잭션 유형]] 번호
버전1바이트1, 2, 3
타임스탬프8바이트유닉스 초
송신자주소
수신자주소또는 4바이트 빈 표시 02 00 00 00
수수료8바이트원자 단위
생존8바이트버전 2와 3
만료4바이트버전 3
본문4바이트 길이, 그다음 본문최대 65,536바이트
에스크로 부분가변또는 4바이트 빈 표시
메시지4바이트 길이, 그다음 메시지선택 사항
서명가변항상 마지막

주소는 4바이트 유형 번호와 그 뒤의 페이로드로 이루어집니다. 네이티브 ZBC_ 계정은 모두 36바이트, Ethereum 계정은 24바이트입니다(계정과 주소 참조). 모든 금액은 원자 단위의 정수이며, 1 ZBC는 100,000,000 원자 단위입니다.

없는 것

가스 한도는 없습니다. 측정할 가상 머신이 없기 때문입니다. 각 유형은 고정된 규칙이며, 그 가격은 서명하기 전에 알 수 있습니다. 체인 id 필드도 없습니다. 대신 서명이 체인의 제네시스 블록 해시를 포함합니다(트랜잭션 서명 참조). 그리고 논스 필드도 없습니다. 체인이 각 송신자의 논스를 자체 상태에 보관합니다.

버전

  • 버전 1에는 생존 필드가 없습니다.
  • 버전 2는 생존 필드를 추가합니다.
  • 버전 3은 만료 필드도 추가하며, 이 필드가 트랜잭션이 유효한 기간을 정합니다(만료와 타임스탬프 참조).

생존 예치금을 명시한 버전 1 트랜잭션은 거부되며, 만료를 명시한 버전 1이나 2 트랜잭션도 거부됩니다. 그 바이트 구조에는 그것을 넣을 자리가 없기 때문입니다.

생존, 본문, 에스크로 부분, 메시지

  • 생존은 0이거나 최소 10,000,000 원자 단위(0.1 ZBC)입니다. 이는 일반 정리 이후에도 트랜잭션을 저장해 두는 롱제비티 기록을 열며, 결코 환불되지 않습니다(데이터 보관 비용 (롱제비티) 참조). 메시지에 외부 체인의 서명된 트랜잭션을 담은 트랜잭션은 생존 예치금을 낼 수 없습니다.
  • 본문은 최대 65,536바이트이며, 그 유형이 정한 구조를 따릅니다.
  • 에스크로 부분은 SendZBC와 TransferToken만 담을 수 있으며, 결제를 에스크로로 바꿉니다.
  • 메시지는 평문일 때 0 바이트 없이 최대 256바이트, 암호화되었을 때 최대 320바이트(암호화된 메시지는 "ZBE1"로 시작합니다), Ethereum, Solana, Bitcoin의 외부 체인 네이티브 트랜잭션을 담을 때 최대 4,096바이트입니다.

수수료 필드

수수료는 원자 단위로 선언하며, 트랜잭션의 하한 이상이어야 합니다. 하한은 기본 작업 수수료 0.025 ZBC에 등록 노드들이 투표하는 수수료 배율을 곱한 값에, 모든 등록 노드가 보관하는 본문과 메시지 바이트에 대한 요금을 더한 것입니다. 하한은 트랜잭션과 체인의 파라미터에만 의존하므로, 지갑은 서명하기 전에 GET /api/v1/blockchain/estimate-fee로 어느 노드에든 하한을 물어볼 수 있습니다.

하한보다 낮은 수수료는 거부되며, 그런 수수료를 담은 블록은 무효입니다. 하한을 넘게 선언한 부분은 같은 블록에서 지불한 사람에게 돌아오므로, 실수로 많이 내도 손해가 없습니다. 아무것도 옮기지 않는 Empty 유형도 0보다 큰 수수료를 내야 하며, 반대로 저장 증명이나 이벤트 증언처럼 등록 노드가 네트워크를 위해 수행하는 몇 가지 의무는 정확히 0의 수수료를 선언해야 합니다. 공식, 환불, 그리고 수수료가 어디로 가는지는 수수료에서 설명합니다.

같이 보기