환경
모든 메서드 실행에는 다음과 같은 것들과 관련된 환경이 있습니다.
- 메서드를 호출한 사람
- 호출에 첨부된 돈
- 사용 가능한 컴퓨팅 리소스
- 현재 타임스탬프
- 공개 키 유도를 위한 헬퍼 함수(예시)
환경 변수
- 🌐 JavaScript
- 🦀 Rust
Variable Name | SDK Variable | Description |
---|---|---|
Predecessor | near.predecessorAccountId() | Account ID that called this method |
Current Account | near.currentAccountId() | Account ID of this smart contract |
Signer | near.signerAccountId() | Account ID that signed the transaction leading to this execution |
Attached Deposit | near.attachedDeposit() | Amount in NEAR attached to the call by the predecessor |
Account Balance | near.accountBalance() | Balance of this smart contract (including Attached Deposit) |
Prepaid Gas | near.prepaidGas() | Amount of gas available for execution |
Timestamp | near.blockTimestamp() | Current timestamp (number of non-leap-nanoseconds since January 1, 1970 0:00:00 UTC) |
Current Epoch | near.epochHeight() | Current epoch in the blockchain |
Block Index | near.blockIndex() | Current block index (a.k.a. block height) |
Storage Used | near.storageUsage() | Current storage used by this smart contract |
Used Gas | near.usedGas() | Amount of gas used for execution |
Signer Public Key | near.signerAccountPk() | Sender Public Key |
Account Locked Balance | near.accountLockedBalance() | Balance of this smart contract that is locked |
Variable Name | SDK Variable | Description |
---|---|---|
Predecessor | env::predecessor_account_id() | Account ID that called this method |
Current Account | env::current_account_id() | Account ID of this smart contract |
Signer | env::signer_account_id() | Account ID that signed the transaction leading to this execution |
Attached Deposit | env::attached_deposit() | Amount in NEAR attached to the call by the predecessor |
Account Balance | env::account_balance() | Balance of this smart contract (including Attached Deposit) |
Prepaid Gas | env::prepaid_gas() | Amount of gas available for execution |
Timestamp | env::block_timestamp() | Current timestamp (number of non-leap-nanoseconds since January 1, 1970 0:00:00 UTC) |
Current Epoch | env::epoch_height() | Current epoch in the blockchain |
Block Index | env::block_index() | Current block index (a.k.a. block height) |
Storage Used | env::storage_usage() | Current storage used by this smart contract in bytes |
Storage Byte Cost | env::storage_byte_cost() | Current storage cost per byte in yoctoNEAR |
Used Gas | env::used_gas() | Amount of gas used for execution |
Signer Public Key | env::signer_account_pk() | Sender Public Key |
Account Locked Balance | env::account_locked_balance() | Balance of this smart contract that is locked |
호출자는 누구인가요? 여긴 어디?
환경에서는 세 가지 중요한 사용자인 current_account
(현재 계정), predecessor
(전임자), 그리고 signer
(서명자)에 대한 정보를 제공합니다.
현재 계정
current_account
에는 컨트랙트가 배포된 주소가 포함되어 있습니다. 이는 소유권을 구현하는 데 매우 유용합니다. 예를 들어 컨트랙트 자체에서만 호출할 수 있는 퍼블릭 메서드를 만들 때 이를 사용할 수 있습니다.
전임자(Predecessor)와 서명자
predecessor
는 컨트랙트에서 메서드를 호출한 계정입니다. 한편, signer
는 최초 트랜잭션에 서명한 계정을 의미합니다.
단순 트랜잭션(교차 컨트랙트 호출 없음) 중에는 predecessor
와 signer
가 동일합니다. 다. 예를 들어 alice.near가 contract.near를 호출하는 경우, 컨트랙트의 관점에서 alice.near는 predecessor
인 동시에 signer
인 것입니다. 그러나 contract.near가 교차 컨트랙트 호출을 생성하면, predecessor
에 변경 사항이 발생합니다. In the example below, when pool.near executes, it would see contract.near as the predecessor
and alice.near as the signer
.
스마트 컨트랙트와 상호 작용하는 사용자에 대한 정보에 액세스할 수 있습니다.