시가총액: $2.8167T -5.61%
거래량(24시간): $179.5196B 61.64%
공포와 탐욕 지수:

38 - 두려움

  • 시가총액: $2.8167T -5.61%
  • 거래량(24시간): $179.5196B 61.64%
  • 공포와 탐욕 지수:
  • 시가총액: $2.8167T -5.61%
암호화
주제
암호화
소식
cryptostopics
비디오
최고 암호화

언어 선택

언어 선택

통화 선택

암호화
주제
암호화
소식
cryptostopics
비디오

솔라나 네트워크에 스마트 계약을 배포하는 방법은 무엇입니까?

Solana smart contracts are immutable Rust/C programs deployed as on-chain BPF executables, requiring explicit account signing, rent-exempt balances, and strict dependency declarations—no EVM or runtime upgrades.

2026/01/20 10:59

솔라나의 스마트 계약 아키텍처 이해하기

1. 솔라나는 이더리움 스타일의 EVM 호환 스마트 계약을 사용하지 않고 온체인 실행 파일로 배포되는 Rust 또는 C로 작성된 프로그램을 사용합니다.

2. 이러한 프로그램은 계정이 데이터와 실행 코드를 모두 저장하고 모든 상태 변경에 명시적인 계정 서명이 필요한 고유한 실행 모델에서 작동합니다.

3. 모든 프로그램은 호출 중에 특정 계정에 대한 종속성을 선언해야 하며 명령 논리와 데이터 소유권을 엄격하게 분리해야 합니다.

4. 일단 배포된 프로그램은 변경할 수 없습니다. 새 프로그램 ID를 배포하고 상태를 수동으로 마이그레이션하지 않으면 업그레이드 메커니즘이 존재하지 않습니다.

5. 런타임은 임대료 면제를 시행합니다. 프로그램 코드나 영구 데이터를 보유한 계정은 네트워크에 의해 제거되는 것을 방지하기 위해 최소 잔액을 유지해야 합니다.

개발 환경 설정

1. solana-test-validator, solana-cli 및 관련 키 관리 도구를 구성하는 공식 설치 프로그램 스크립트를 사용하여 Solana CLI를 설치합니다.

2. 배포 및 거래 서명을 위한 지갑을 생성하려면 solana-keygen new 를 사용하여 새 키 쌍을 초기화하세요.

3. solana config set --url 을 사용하여 devnet 또는 mainnet-beta를 대상으로 CLI를 구성하여 의도한 배포 범위와 일치하는지 확인합니다.

4. 프로그램을 BPF 바이트코드로 컴파일하는 데 필요한 Solana 전용 빌드 확장인 Cargo-build-bpf를 포함한 Rust 툴체인을 설치합니다.

5. solana-program-library 템플릿을 사용하거나 앵커 프레임워크를 활용하는 경우 앵커 초기화 명령을 사용하여 새 프로그램 스캐폴드를 생성합니다.

기본 프로그램 작성 및 컴파일

1. 명령어 변형을 핸들러 함수에 매핑하는 #[program] 주석이 달린 진입점 함수를 정의합니다.

2. &[AccountInfo]를 허용하고 계정 권한, 소유권 및 가변성 플래그를 검증하는 명령 처리기를 구현합니다.

3. 클라이언트와 프로그램 간에 전달되는 구조체의 결정적 직렬화를 위해 borsh 또는 byteuck을 사용합니다.

4. Cargo build-bpf를 사용하여 프로그램을 컴파일하여 target/deploy/ 디렉터리에 .so 파일을 생성합니다.

5. 로컬 유효성 검사기의 solana 프로그램 쇼를 사용하여 컴파일된 아티팩트가 예상 BPF 버전 및 ABI 레이아웃과 일치하는지 확인합니다.

네트워크에 배포

1. 로컬에서 solana-test-validator를 시작하여 네트워크 조건을 시뮬레이션하고 실제 배포 전에 프로그램 동작을 확인합니다.

2. 거래 수수료 및 임대 비용을 충당하기 위해 solana 에어드랍을 사용하여 배포자 키 쌍에 SOL을 에어드랍합니다.

3. solana 프로그램 배포를 사용하여 컴파일된 프로그램을 배포하고, .so 경로를 지정하고 결과 프로그램 ID를 확인합니다.

4. solana 프로그램 write-buffer를 호출한 후 필요한 경우 solana 프로그램 set-buffer-authority를 ​​호출하여 프로그램 상태에 대한 쓰기 가능 계정을 할당합니다.

5. solana 프로그램 쇼로 프로그램 계정을 쿼리하고 계정에 실행 가능한 데이터와 올바른 소유자 필드가 있는지 확인하여 성공적인 배포를 확인합니다.

자주 묻는 질문

Q: 동일한 주소에 프로그램을 재배포할 수 있나요? A: 아니요. 배포할 때마다 새 프로그램 ID가 생성됩니다. 주소를 재사용하려면 새 프로그램을 배포하고 이전 인스턴스에서 상태를 수동으로 전송해야 합니다.

Q: "계정이 임대료 면제가 아닙니다"라는 메시지와 함께 배포가 실패하는 이유는 무엇입니까? A: 프로그램 계정 또는 관련 데이터 계정에는 임대료 면제 기준액을 충족할 만큼 충분한 램프가 부족합니다. 솔라나 전송을 통해 명시적으로 자금을 조달하세요.

Q: 각 명령 처리기에 대해 별도의 계정이 필요합니까? A: 아니요. 명령어 라우팅은 단일 프로그램 바이너리 내에서 발생합니다. 핸들러는 클라이언트가 전달한 명령 판별 바이트를 기반으로 런타임 시 선택됩니다.

Q: 프로그램 지침이 컴퓨팅 예산을 초과하면 어떻게 됩니까? A: ComputeBudgetExceeded 오류로 인해 거래가 되돌려집니다. 루프를 최적화하고, 메모리 할당을 제한하고, 메시지를 사용하세요! 사이클 소비를 줄이기 위해 아껴서.

부인 성명:info@kdj.com

제공된 정보는 거래 조언이 아닙니다. kdj.com은 이 기사에 제공된 정보를 기반으로 이루어진 투자에 대해 어떠한 책임도 지지 않습니다. 암호화폐는 변동성이 매우 높으므로 철저한 조사 후 신중하게 투자하는 것이 좋습니다!

본 웹사이트에 사용된 내용이 귀하의 저작권을 침해한다고 판단되는 경우, 즉시 당사(info@kdj.com)로 연락주시면 즉시 삭제하도록 하겠습니다.

관련 지식

LayerZero 계약으로 크로스체인 메시지를 실행하는 방법은 무엇입니까?

LayerZero 계약으로 크로스체인 메시지를 실행하는 방법은 무엇입니까?

2026-01-18 13:19:39

LayerZero 아키텍처 이해 1. LayerZero는 신뢰할 수 있는 중개자나 래핑된 자산에 의존하지 않고 블록체인 간의 통신을 가능하게 하는 경량의 무허가 상호 운용성 프로토콜로 작동합니다. 2. 각 체인에 배포된 Ultra Light Node(ULN)를 활용하여...

안전한 서명 검증을 위해 EIP-712를 구현하는 방법은 무엇입니까?

안전한 서명 검증을 위해 EIP-712를 구현하는 방법은 무엇입니까?

2026-01-20 22:20:26

EIP-712 개요 및 핵심 목적 1. EIP-712는 이더리움 애플리케이션에서 형식화된 구조화된 데이터 해싱 및 서명에 대한 표준을 정의합니다. 2. 서명 요청 시 원시 16진수 문자열 대신 사람이 읽을 수 있는 도메인 및 메시지 필드를 지갑에 표시할 수 있습니다. ...

새로운 계약과 상호 작용하여 에어드랍 자격을 얻는 방법은 무엇입니까?

새로운 계약과 상호 작용하여 에어드랍 자격을 얻는 방법은 무엇입니까?

2026-01-24 21:00:23

계약 상호 작용 요구 사항 이해 1. 대부분의 에어드롭 캠페인은 Ethereum, Arbitrum 또는 Base와 같은 지원되는 블록체인에 배포된 스마트 계약과의 직접적인 상호 작용을 요구합니다. 2. 상호 작용에는 일반적으로 dApp 인터페이스에 연결된 지갑을 사용하...

보안 경고에 대한 스마트 계약을 모니터링하는 방법은 무엇입니까?

보안 경고에 대한 스마트 계약을 모니터링하는 방법은 무엇입니까?

2026-01-21 07:59:57

온체인 모니터링 도구 1. Etherscan 및 Blockscout와 같은 블록체인 탐색기를 사용하면 계약 바이트 코드, 트랜잭션 로그 및 내부 호출을 실시간으로 검사할 수 있습니다. 2. 온체인 데이터를 신뢰하기 전에 계약 확인 상태를 확인해야 합니다. 확인되지 않은...

자동 결제 계약을 설정하고 자금을 조달하는 방법은 무엇입니까?

자동 결제 계약을 설정하고 자금을 조달하는 방법은 무엇입니까?

2026-01-26 08:59:35

스마트 계약 배포 이해 1. 개발자는 가스 효율성 및 보안 요구 사항을 기반으로 Ethereum, Polygon 또는 Arbitrum과 같은 호환 가능한 블록체인 플랫폼을 선택해야 합니다. 2. Solidity는 특히 반복 또는 조건부 이체를 위한 결제 자동화 로직 작...

OpenZeppelin 계약을 사용하여 안전한 dApp을 구축하는 방법은 무엇입니까?

OpenZeppelin 계약을 사용하여 안전한 dApp을 구축하는 방법은 무엇입니까?

2026-01-18 11:19:49

OpenZeppelin 계약 기본 사항 이해 1. OpenZeppelin Contracts는 Ethereum 및 EVM 호환 블록체인용으로 구축된 재사용 가능한 커뮤니티 감사 스마트 계약 구성 요소 라이브러리입니다. 2. 라이브러리의 각 계약은 검사-효과-상호작용 패턴...

LayerZero 계약으로 크로스체인 메시지를 실행하는 방법은 무엇입니까?

LayerZero 계약으로 크로스체인 메시지를 실행하는 방법은 무엇입니까?

2026-01-18 13:19:39

LayerZero 아키텍처 이해 1. LayerZero는 신뢰할 수 있는 중개자나 래핑된 자산에 의존하지 않고 블록체인 간의 통신을 가능하게 하는 경량의 무허가 상호 운용성 프로토콜로 작동합니다. 2. 각 체인에 배포된 Ultra Light Node(ULN)를 활용하여...

안전한 서명 검증을 위해 EIP-712를 구현하는 방법은 무엇입니까?

안전한 서명 검증을 위해 EIP-712를 구현하는 방법은 무엇입니까?

2026-01-20 22:20:26

EIP-712 개요 및 핵심 목적 1. EIP-712는 이더리움 애플리케이션에서 형식화된 구조화된 데이터 해싱 및 서명에 대한 표준을 정의합니다. 2. 서명 요청 시 원시 16진수 문자열 대신 사람이 읽을 수 있는 도메인 및 메시지 필드를 지갑에 표시할 수 있습니다. ...

새로운 계약과 상호 작용하여 에어드랍 자격을 얻는 방법은 무엇입니까?

새로운 계약과 상호 작용하여 에어드랍 자격을 얻는 방법은 무엇입니까?

2026-01-24 21:00:23

계약 상호 작용 요구 사항 이해 1. 대부분의 에어드롭 캠페인은 Ethereum, Arbitrum 또는 Base와 같은 지원되는 블록체인에 배포된 스마트 계약과의 직접적인 상호 작용을 요구합니다. 2. 상호 작용에는 일반적으로 dApp 인터페이스에 연결된 지갑을 사용하...

보안 경고에 대한 스마트 계약을 모니터링하는 방법은 무엇입니까?

보안 경고에 대한 스마트 계약을 모니터링하는 방법은 무엇입니까?

2026-01-21 07:59:57

온체인 모니터링 도구 1. Etherscan 및 Blockscout와 같은 블록체인 탐색기를 사용하면 계약 바이트 코드, 트랜잭션 로그 및 내부 호출을 실시간으로 검사할 수 있습니다. 2. 온체인 데이터를 신뢰하기 전에 계약 확인 상태를 확인해야 합니다. 확인되지 않은...

자동 결제 계약을 설정하고 자금을 조달하는 방법은 무엇입니까?

자동 결제 계약을 설정하고 자금을 조달하는 방법은 무엇입니까?

2026-01-26 08:59:35

스마트 계약 배포 이해 1. 개발자는 가스 효율성 및 보안 요구 사항을 기반으로 Ethereum, Polygon 또는 Arbitrum과 같은 호환 가능한 블록체인 플랫폼을 선택해야 합니다. 2. Solidity는 특히 반복 또는 조건부 이체를 위한 결제 자동화 로직 작...

OpenZeppelin 계약을 사용하여 안전한 dApp을 구축하는 방법은 무엇입니까?

OpenZeppelin 계약을 사용하여 안전한 dApp을 구축하는 방법은 무엇입니까?

2026-01-18 11:19:49

OpenZeppelin 계약 기본 사항 이해 1. OpenZeppelin Contracts는 Ethereum 및 EVM 호환 블록체인용으로 구축된 재사용 가능한 커뮤니티 감사 스마트 계약 구성 요소 라이브러리입니다. 2. 라이브러리의 각 계약은 검사-효과-상호작용 패턴...

모든 기사 보기

User not found or password invalid

Your input is correct