실행 모델
이 페이지는 카이아 스마트 컨트랙트의 실행 모델, 데이터 구조, 생명주기에 대해 설명합니다.
실행 모델
Transactions can be generated by platform APIs as described in Platform API Specification. 이러한 트랜잭션은 컨센서스 노드(CN) 로 전송되어 블록에 저장됩니다. CN은 수신된 각 트랜잭션이 유효한지 확인합니다. 유효한 트랜잭션은 트랜잭션 풀에 저장되며, 그렇지 않은 트랜잭션은 폐기됩니다. CN은 트랜잭션 풀에서 현재 블록에 있는 실행 가능한 트랜잭션을 선택하고 하나씩 실행합니다.
트랜잭션을 실행하려면 발신자는 트랜잭션 수수료로 일정 금액의 KAIA를 지불해야 합니다. KAIA의 트랜잭션 수수료는 가스와 승수, 즉 단가를 기준으로 계산됩니다. 가스는 계산의 기본 단위입니다. Kaia 노드에서 실행되는 모든 작업은 미리 정의된 양의 가스를 소비합니다. The exact amount of KAIA required for the transaction is calculated by the formula illustrated in Transaction Fees. 발신자가 가스 부족과 함께 트랜잭션을 제출하면 트랜잭션이 실패할 수 있습니다. 또한 발신자 계정의 잔액이 부족한 경우에도 트랜잭션이 실패할 수 있습니다.
트랜잭션이 성공적으로 실행되면 해당 트랜잭션은 현재 블록에 포함됩니다. CN은 블록 가스 한도 또는 블록 시간 제한에 도달할 때까지 트랜잭션을 수집합니다. 그런 다음 CN은 트랜잭션으로 블록을 생성합니다. 이 단계에서는 블록의 여러 필드를 채워야 합니다. 예를 들어 트랜잭션, 영수증, 상태 등의 해시값을 계산해야 합니다. 모든 필수 필드가 완료되면 CN은 블록 해시를 생성합니다.
블록 생성이 완료되면 블록은 다른 모든 CN에 전파됩니다. 다른 CN들은 모두 전파된 블록을 검증하고 BFT 합의 알고리즘을 사용하여 검증 결과에 대한 합의에 도달합니다. 대다수의 CN에 의해 검증 프로세스가 성공적으로 완료되면 블록이 블록체인에 저장됩니다. BFT 합의 알고리즘은 즉각적인 완결성 속성을 만족하기 때문에 블록은 최종적이며 절대 제거되지 않습니다. 블록이 확정된 후에는 해당 블록에 포함된 모든 트랜잭션의 실행이 비가역적으로 보장되며, 요청 시 발신자에게 트랜잭션 실행 결과를 반환할 수 있습니다.
Enhanced Randomness in Block Proposer and Committee Selection
Kaia has implemented a new mechanism to introduce verifiable on-chain randomness in the block proposer and committee selection processes. This mechanism involves two new fields in the block header: randomReveal
and mixHash
.
In this system, block proposers generate and commit to random values. The randomReveal
field in a block contains the proposer's signature, generated using a specific signature scheme, and is calculated based on the current block number being proposed. The mixHash
is then computed using this revealed random value along with other block data, creating a source of randomness for the network.
The block proposer and committee selection processes utilize this generated randomness. The use of this randomness aims to make the selection processes more unpredictable and fair, enhancing the overall security of the network. One particular use case for this mechanism is allowing block proposers to remain private until the previous block is completed, adding an extra layer of security to the network.
The execution flow creates a cycle where each block's randomness influences future block proposer and committee selections. This introduces an element of unpredictability to these processes while maintaining their verifiability.
It's important to note that while this randomness is used in selection processes, rewards are still distributed at the end of block mining by directly modifying states, based on staking amounts. The randomness determines which validators are selected to be part of the committee that receives rewards, not the amount of rewards distributed.
Several security considerations are crucial to this mechanism:
- To prevent replay attacks, each
randomReveal
value must be unique for each block. - Block proposers must honestly generate and submit their
randomReveal
to prevent manipulation of themixHash
. - Proposers must keep their
randomReveal
secret until the block proposal to prevent prediction and potential manipulation by other participants. - The
randomReveal
must be properly signed and validated to prevent tampering.
This mechanism aims to introduce unpredictability in the block creation and committee selection processes while maintaining verifiability. It's important to note that while this system provides a framework for enhanced randomness, the specific implementations of proposer and committee selection algorithms using this randomness may evolve over time as the network develops and improves.
트랜잭션 실행 제한
Kaia Mainnet and Kairos Testnet currently have the following restrictions on the transaction execution:
- You can set gasPrice of the transaction, but it means it's the most you can pay. The actual gasPrice will be determined by network. For more detailed information, see gas price overview
- 계산 비용 한도보다 실행 비용이 큰 트랜잭션은 버려집니다. 계산 비용을 참조하세요.
- As of the Shanghai hardfork, there is an additional gas cost for contract creation based on the length of the initcode, charged at 2 gas for every 32-byte chunk of initcode.
Restrictions on Smart Contract Deployment
Kaia implements several restrictions on smart contract deployment:
- As of the Kore hardfork, deployment of new contract code starting with the 0xEF byte is not allowed, as per EIP-3541.
- Since the Shanghai hardfork:
- Deployment of new contract code is rejected if the initcode length exceeds 49,152 bytes.
- The length of the new contract code cannot exceed 24,576 bytes.
- These limitations are based on EIP-3860.
- Smart contract account (SCA) overwriting over externally owned accounts (EOA) is enabled.
데이터 구조
계정(Account)
카이아 블록체인 플랫폼에서 계정은 개인의 잔액이나 스마트 컨트랙트에 대한 정보를 담고 있는 데이터 구조입니다. 카이아는 더 나은 DX와 UX를 제공하기 위해 계정 모델을 재설계합니다. 계정 모델에 대한 자세한 정보는 여기에서 확인할 수 있습니다.