디지털 자산 프로젝트 생성 및 작성
Blockchain App Builder를 사용하여 스마트 계약 프로젝트를 만들고 작성하여 디지털 자산으로 작업 할 수 있습니다.
Blockchain App Builder For Besu는 ERC-20 또는 ERC-1155 토큰에 대한 자체 포함 된 Hardhat 프로젝트를 생성합니다. 확장에서 토큰 표준 및 지원되는 기능을 선택합니다. Blockchain App Builder의 작곡가 함수는 일치하는 SDK를 복사하고 구체적인 UUPS(Universal Upgradeable Proxy Standard) 토큰 계약을 생성하며 스마트 계약을 배포하고 업그레이드하는 스크립트를 추가합니다.
작성기 함수를 사용하여 토큰 ABI 및 계정 계약이 명시적 기능 프로파일에서 파생되는 프로젝트를 생성합니다. 프로젝트를 생성할 때 토큰을 배치하지 않으며 npm install 명령을 자동으로 실행하지 않습니다.
디지털 자산 프로젝트를 생성 및 배포하려면 먼저 Blockchain App Builder for Besu 확장을 설치하고 Visual Studio Code 작업 영역을 열어야 합니다. 생성된 프로젝트를 배치하려면 Node.js 및 npm을 설치해야 합니다. 또한 접근 가능한 Hardhat 또는 Besu 네트워크, 계약을 배포 할 수있는 계정, 기존 거버넌스 계약 및 거버넌스 UUID가 필요합니다.
생성된 배포 스크립트에는 GOVERNANCE_ADDRESS 및 GOVERNANCE_UUID 환경 변수가 필요합니다. 편집기 함수는 이 거버넌스 컨텍스트를 생성된 계정 및 토큰 프록시에 연결합니다. 배포 활성화는 구성된 거버넌스 워크플로우에 따라 유지됩니다.
프로젝트 생성
- Blockchain App Builder For Besu 작업 표시줄에서 모듈 보기를 엽니다.
- 모듈 작성기 열기를 선택한 다음 모듈 작성기 탭을 선택합니다.
- 새 Hardhat 프로젝트 생성에서 프로젝트 이름을 입력하고 상위 폴더를 선택합니다. coompose 함수는
<parent_folder>/<project_name>디렉토리 구조를 사용하여 프로젝트를 생성합니다.프로젝트 이름에는 문자, 숫자, 마침표, 하이픈 및 밑줄이 포함될 수 있지만 이중 마침표(..)는 포함할 수 없습니다. 프로젝트 이름은 문자 또는 밑줄로 시작해야 하고 문자, 숫자 및 밑줄만 포함할 수 있습니다. 대상은 비워 두어야 합니다. compose 함수는 비어 있지 않은 프로젝트 폴더를 덮어쓰지 않습니다.
- 다음 절에 설명된 토큰 표준, 구성 모드 및 기능을 선택합니다.
- Solidity 계약 이름을 입력합니다. 예를 들어, DepositToken을 입력합니다.
- 생성된 구성 미리보기를 검토한 다음 패키지 생성을 선택합니다.
프로젝트 생성이 성공하면 확장에서 프로젝트를 계약 보기로 임포트합니다.
구성 모드
- 엄격한 구성 모드: 생성된 토큰은 선택된 선택적 기능만 노출하는 기준을 상속합니다. 구성 중 선택되지 않은 기능을 추가하려면 구현 업그레이드가 필요합니다.
- 생성된 토큰은 전체 표면 호환성 기준을 상속합니다. 런타임 구성은 적용 가능한 동작을 제어하지만 더 넓은 메소드 표면은 ABI에 남아 있습니다.
ERC-20 프로젝트 작성
- ERC-5892: 표준 액세스 제어 백엔드.
- ERC-6617: 비트 기반 액세스 제어 백엔드.
그런 다음 다음 다음 표에 설명된 기능을 구성합니다.
| 입력 | 값 | 노트 |
|---|---|---|
| 주조 | 사용 안함, 직접, 승인 필요 | 승인이 필요하면 요청/승인 워크플로우가 추가됩니다. |
| 불타는 | 사용 안함, 직접, 승인 필요 | 승인이 필요하면 요청/승인 워크플로우가 추가됩니다. |
| 보류 가능 | 켜기 또는 끄기 | 보류 워크플로우를 지원합니다. |
| 역할 | 켜기 또는 끄기 | 승인 연동, 승인 연소 또는 보류 가능한 워크플로우에 대해 NOTARY 승인이 필요하므로 자동으로 사용으로 설정됩니다. |
| 일일 한도 | 켜기 또는 끄기 | 일별 제한 적용이 있거나 없는 계정 변형을 선택합니다. |
| 다중 레벨 승인 | 켜기 또는 끄기 | 계정 및 승인 정책과 승인 후 보류 실행을 사용으로 설정합니다. 보류 가능한 기능을 자동으로 활성화합니다. |
이전 가능한 동작, 위임된 작업, 일시 중지 가능한 동작 및 거버넌스 승인 플로우와 같은 동작은 항상 ERC-20에서 생성된 프로파일의 일부입니다. 역할은 작성 함수에서 자동으로 사용으로 설정한 경우에도 프로파일의 일부입니다.
예를 들어, 보류가 없는 직접 민트 직접 번 토큰은 엄격한 기본 ERC20DirectMintBurnUpgradeable를 생성합니다. 다중 레벨 승인을 사용으로 설정하면 대신 보류 가능한 다중 레벨 승인 기준이 선택되고 추가 ERC20MultiLevelApprovalHelperLib 라이브러리가 배치됩니다.
ERC-1155 프로젝트 작성
ERC-1155 프로젝트는 기본적으로 ERC-5982 액세스 제어 백엔드를 사용합니다. 하나의 자산 유형 선택:
- Fungible token: 대체 가능한 공급이 있는 토큰 클래스입니다.
- 전체 NFT: 비소수 NFT 클래스.
- 분수 NFT: 소수 소유권이 있는 NFT 클래스입니다.
- 정 피곤와 관련검색글로벌 네트워크어디서나Get다운로드 전자 Combined fungible and non-fungible tokens: Classes for both fungible tokens and NFTs ,가필요니다.
직접 조폐 및 레코딩을 사용 또는 사용 안함으로 구성합니다. ERC-1155에 대해서는 승인으로 연동 및 연소가 지원되지 않습니다. 작성 기능에는 항상 전송 가능한 동작, 위임된 운영자 승인(setApprovalForAll 및 isApprovedForAll), 일시 중지 가능한 동작, 거버넌스 및 ERC-5982 액세스 제어가 포함됩니다.
롤을 활성화할 수 있습니다. NFT 자산 유형의 경우 잠금 가능 NFT를 사용으로 설정할 수도 있습니다. 고정은 대체 가능한 토큰에 사용할 수 없으며 민팅 및 레코딩이 모두 사용 안함으로 설정된 경우 사용 안함으로 설정됩니다. 분할 가능/분할 가능 동작은 개별적으로 입력되지 않은 선택된 자산 유형에서 파생됩니다. 일별 제한, 보류 가능한 동작 및 다중 레벨 승인은 지원되지 않습니다.
결합된 ERC-1155 프로파일은 엄격한 구성을 선택하는 경우에도 전체 표면 ERC1155CombinedTokenUpgradeable 베이스를 사용합니다. 기타 엄격한 프로파일에는 자산 유형 및 민트/번별 기준이 사용됩니다.
생성된 프로젝트 콘텐츠
작성 함수는 다음과 같은 프로젝트 구조를 작성합니다.
<project>/
├── contracts/
│ ├── obp-sdk/ # copied ERC-20 or ERC-1155 SDK source
│ └── <ContractName>/
│ ├── <ContractName>Upgradeable.sol
│ └── generated.manifest.json # selected profile and generated paths
├── scripts/
│ ├── deploy/<contract-name>/deploy-<contract-name>.ts
│ └── upgrade/
│ ├── upgrade-<contract-name>.ts
│ └── upgrade-<contract-name>-account.ts
├── .obp-bap/
│ ├── plugins/ # bundled Hardhat plugin archives
│ └── project.json # Composer project metadata
├── config/hardhat-env.ts
├── hardhat.config.ts
├── package.json
└── README.mdcontracts/obp-sdk/ 아래에 있는 SDK는 생성된 프로젝트로 복사되며 생성 후 프로젝트가 소유합니다. 매니페스트는 토큰 표준, 컴포지션 모드, 선택된 기본 및 계정 계약 및 전체 정규화된 기능 프로파일을 기록합니다.
생성 오류 문제 해결
| 메시지 또는 조건 | 해결 |
|---|---|
Select one identity-permission module |
ERC-20의 경우 ERC-5982 또는 ERC-6617을 선택합니다. |
Contract name must start with a letter/underscore |
유효한 솔리드 식별자를 사용합니다. |
Project name is required 또는 안전하지 않은 이름
|
경로 구분자 또는 이중 마침표(..) 없이 단순 프로젝트 이름을 제공합니다. |
Choose a parent folder |
컴포저에서 절대 상위 폴더를 선택합니다. |
| 대상 폴더가 존재하며 비어 있지 않습니다. | 새 프로젝트 이름 또는 빈 대상을 선택합니다. compose 함수는 프로젝트를 덮어쓰지 않습니다. |
| ERC-1155 승인 기반 조폐 또는 레코딩은 지원되지 않습니다. | ERC-1155 연동 및 레코딩의 경우 사용 안함 또는 직접을 선택합니다. |
GOVERNANCE_ADDRESS and GOVERNANCE_UUID are required |
생성된 배포 스크립트를 실행하기 전에 두 값을 모두 구성합니다. |
계약 프로젝트를 생성한 후 임포트된 프로젝트를 계약 보기에서 사용하여 배포 또는 실행 양식을 컴파일, 배포 및 열 수 있습니다. 생성된 매니페스트를 계약에 유지합니다. 확장 도구는 매니페스트를 사용하여 생성된 토큰 및 계정 ABI를 선택한 편집기 프로파일과 쌍을 이룹니다.