Skip to content

Commit

Permalink
Merge pull request #50 from welldonestudio/docs/fix_chore
Browse files Browse the repository at this point in the history
fix: starknet verificaiton chore fix
  • Loading branch information
0xhsy authored Oct 10, 2024
2 parents bbf3f0d + cd03c73 commit 58c92a7
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 9 deletions.
2 changes: 1 addition & 1 deletion docs/tutorials/starknet-cairo-verification/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ The Cairo project structure is as follows (assuming a `DECLARE` and `DEPLOY` to
└── simple_storage_simple_storage.contract_class.json
```

When you request verification from Multi-chain Verification Tool `/starknet/verifications` API, which will be released later, it compiles the code according to the compiler version, calculates `class_hash` and `compiled_class_hash`, and compares the class hash value of the Starknet network with the compiled class hash value.
When you request verification from Multi-chain Verification Tool `/starknet/verifications` API, which will be released later, it compiles the code according to the compiler version, computes `class_hash` and `compiled_class_hash`, and compares the class hash value of the Starknet network with the compiled class hash value.

### Why do we need to verify two hash values?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ Starknet은 아래의 컴포넌트로 구성되어 있다:

Starknet의 트랜잭션 라이프사이클은 다음과 같은 순서로 진행된다.

1. 트랜잭션 제출: 트랜잭션이 하나의 Sequencer로 제출되고, `RECEVIED` 상태로 표시한다.
1. 트랜잭션 제출: 트랜잭션이 하나의 sequencer로 제출되고, `RECEVIED` 상태로 표시한다.
2. Mempool 유효성 검증: Mempool에서 트랜잭션의 유효성을 검증하며 아래의 경우 등을 검증한다.
- 현재 account 잔액 `max_fee` 초과 여부
- 트랜잭션의 calldata가 limit 초과 여부
Expand Down Expand Up @@ -85,25 +85,25 @@ mod simple_storage {

## How to verify Cairo Smart Contract?

위의 `simple_storage.cairo`를 곧 런칭될 WELLDONE Studio의 Multi-chain Verification Tool을 사용해서 검증을 진행할 수 있다. Cairo로 작성된 스마트 컨트랙트를 배포하려면 Starknet [문서](https://docs.starknet.io/quick-start/environment-setup/)를 참조하여 배포를 진행할 수 있다. 배포를 진행한 후에는 Starkscan이나 Nethermind의 Voyager Explorer를 통해 올바르게 배포되었는지 확인할 수 있다.
위의 `simple_storage.cairo`를 곧 런칭될 WELLDONE Studio의 Multi-chain Verification Tool을 사용해서 검증을 진행할 수 있다. Cairo로 작성된 스마트 컨트랙트를 배포하려면 Starknet [문서](https://docs.starknet.io/quick-start/environment-setup/)를 참조하여 배포를 진행할 수 있다. 배포를 진행한 후에는 [Starkscan](https://starkscan.co/)이나 [Nethermind Voyager Explorer](https://voyager.online/) 통해 올바르게 배포되었는지 확인할 수 있다.

Multi-chain Verification Tool을 사용하여 Cairo 스마트 컨트랙트를 하기 위해서는 총 5가지의 정보가 필요하다
Multi-chain Verification Tool을 사용하여 Cairo 스마트 컨트랙트를 하기 위해서는 총 5가지의 정보가 필요하다:

1. Contract Address: Deploy된 스마트 컨트랙트 주소
2. `DECLARE` Transaction Hash: Declare 트랜잭션 해시가 필요한 이유는 `class_hash`뿐만 아니라 `compiled_class_hash`에 대한 검증 필요성이 있기 때문이다. 추후에는 `DECLARE` 트랜잭션 해시를 제외할 예정이다.
3. Scarb Version: Scarb는 Cairo 패키지 매니저로 Cairo 프로젝트를 컴파일한다. 컴파일러 버전에 의존하여 [컴파일](https://github.com/starkware-libs/cairo/blob/410069c5745800bab4fbd2f0f4ff0bbfc59209d6/crates/cairo-lang-starknet-classes/src/contract_class.rs#L49)되기 때문에 명시해줘야 한다.
4. Chain ID: Mainnet(`0x534e5f4d41494e`)과 Sepolia(`0x534e5f5345504f4c4941` ) 구별 용도
4. Chain ID: Mainnet(`0x534e5f4d41494e`)과 Sepolia(`0x534e5f5345504f4c4941`) 구별 용도
5. Cairo 프로젝트 소스 코드

Cairo를 검증하기 위해서는 Scarb.toml에 다음 config을 꼭 추가해야 한다:
Cairo를 검증하기 위해서는 `Scarb.toml` 다음 config을 꼭 추가해야 한다:

```toml
[[target.starknet-contract]]
casm = true
sierra = true
```

Cairo 프로젝트 구조는 다음과 같다 (네트워크에 DECLARE와 DEPLOY 완료 가정):
Cairo 프로젝트 구조는 다음과 같다 (네트워크에 `DECLARE``DEPLOY` 완료 가정):

```toml
├── Scarb.lock
Expand All @@ -119,13 +119,13 @@ Cairo 프로젝트 구조는 다음과 같다 (네트워크에 DECLARE와 DEPLOY
└── simple_storage_simple_storage.contract_class.json
```

추후에 공개될 MCVP의 /starknet/verifications의 API에 검증을 요청하면, 컴파일러 버전에 맞춰 코드를 컴파일하여 class_hash 와 compiled_class_hash를 계산하여 Starknet 네트워크의 class hash 값과 compiled class hash 값을 비교하여 검증을 진행한다.
추후에 공개될 MCVP의 `/starknet/verifications` API에 검증을 요청하면, 컴파일러 버전에 맞춰 코드를 컴파일하여 `class_hash``compiled_class_hash` 계산하여 Starknet 네트워크의 class hash 값과 compiled class hash 값을 비교하여 검증을 진행한다.

### Why do we need to verify two hash values?

Ethereum에서 Solidity로 작성된 Smart Contract를 검증하기 위해서는 한 가지의 컴파일된 바이트 코드 결과값과 네트워크의 바이트코드를 비교한다. 그러나 Starknet에서는 한 가지의 해시값이 아닌 두 가지의 해시값, `class_hash``compiled_class_hash`을 비교한다. [Class Hash](https://docs.starknet.io/architecture-and-concepts/smart-contracts/class-hash/)[Compiled Class Hash](https://docs.starknet.io/architecture-and-concepts/smart-contracts/compiled-class-hash/)는 이 문서에서 자세하게 다루고 있다.

사용자가 `DECLARE` 트랜잭션을 전송하면, `class_hash``compiled_class_hash`에 동시에 서명한다. Sequencer는 Sierra → CASM 컴파일을 수행하고 결과물인 `compiled_class_hash`와 사용자가 서명한 `compiled_class_hash`를 비교한다. 만약에 Sequencer가 악의적인 경우, Sierra와 관련 없는 CASM이 선언된 클래스를 가져올 수 있기 때문에 `compiled_class_hash` 값도 비교한다.
사용자가 `DECLARE` 트랜잭션을 전송하면, `class_hash``compiled_class_hash`에 동시에 서명한다. Sequencer는 Sierra → CASM 컴파일을 수행하고 결과물인 `compiled_class_hash`와 사용자가 서명한 `compiled_class_hash`를 비교한다. 만약에 sequencer가 악의적인 경우, Sierra와 관련 없는 CASM이 선언된 클래스를 가져올 수 있기 때문에 `compiled_class_hash` 값도 비교한다.

### Reference
[https://docs.starknet.io/](https://docs.starknet.io/)
Expand Down

0 comments on commit 58c92a7

Please sign in to comment.