블록체인 (Block Chain)/이더리움

[브라우니 (Brownie)] 7. 브라우니 패키지 관리자

2023. 6. 16. 16:37
728x90
반응형
SMALL

 

브라우니는 다른 프로젝트를 패키지로 설치할 수 있습니다. 패키지의 이점은 다음과 같습니다:
  • 다른 사람이 작성한 코드 아이디어를 쉽게 가져와서 빌드할 수 있음
  • 프로젝트 간에 중복된 코드를 줄일 수 있음
  • 프로젝트와 다른 프로젝트 간의 상호작용을 확인하는 단위 테스트 작성 가능

브라우니 패키지 매니저는 명령줄에서 사용할 수 있습니다:

$ brownie pm

패키지 설치

브라우니는 ethPM 및 Github에서 패키지 설치를 지원합니다.

Github에서 설치

패키지를 설치하는 가장 쉬운 방법은 Github 저장소에서 설치하는 것입니다. 브라우니에서 Github 저장소는 다음 기준을 충족하면 패키지로 간주됩니다:

  • 저장소는 하나 이상의 태그 버전을 가지고 있어야 합니다. 저장소는
  • 하나 이상의 Solidity 또는 Vyper 소스 파일이 포함된 contracts/ 폴더를 포함해야 합니다.

저장소는 브라우니를 구현할 필요가 없습니다. Truffle이나 Embark와 같은 프레임워크를 사용하는 많은 인기 있는 프로젝트가 브라우니 패키지로 추가될 수 있습니다.

Github에서 패키지를 설치하려면 패키지 ID를 사용해야 합니다. 패키지 ID는 조직 이름, 저장소 및 버전 태그의 이름으로 구성됩니다. 패키지 ID는 대소문자를 구분하지 않습니다.

[ORGANIZATION]/[REPOSITORY]@[VERSION]

API 액세스 토큰(예: 개인 액세스 토큰)을 사용하여 개인 Github 저장소에서 설치하는 것도 가능합니다. 이를 위해서는 GITHUB_TOKEN 환경 변수를 username:ghp_token_secret 형식으로 브라우니에 제공해야 합니다. 또한 https://docs.github.com/en/rest/overview/other-authentication-methods#basic-authentication를 참조하세요.

✅
API 토큰을 커맨드 히스토리나 다른 곳에서 노출하지 않도록 주의하고, 필요한 권한 이상으로 허용하지 마세요! 이 경우 repo 권한이 충분합니다.

예시

OpenZeppelin contracts 버전 3.0.0을 설치하려면:

$ brownie pm install OpenZeppelin/openzeppelin-contracts@3.0.0

AragonOS 버전 4.0.0을 설치하려면:

$ brownie pm install aragon/aragonos@4.0.0

ethPM에서 설치하기

Ethereum Package Manager (ethPM)은 EVM 스마트 컨트랙트 및 프로젝트를 배포하는 데 사용되는 분산 패키지 관리자입니다.

ethPM 패키지는 ABI, 소스 코드, 바이트 코드, 배포 데이터 및 스마트 컨트랙트 아이디어를 구성하는 기타 정보를 모두 포함하는 JSON 객체입니다. ethPM 사양은 이러한 모든 데이터를 구조화된 JSON 형식으로 저장하는 스키마를 정의하여 사양을 지원하는 도구 및 프레임워크 간에 스마트 컨트랙트 아이디어를 빠르고 효율적으로 전송할 수 있도록합니다.

ethPM 패키지를 얻으려면 패키지 이름과 사용 가능한 레지스트리의 주소를 알아야합니다. 이 정보는 레지스트리 URI를 통해 전달됩니다. 레지스트리 URI는 다음 형식을 사용합니다:

ethpm://[CONTRACT_ADDRESS]:[CHAIN_ID]/[PACKAGE_NAME]@[VERSION]

스네이크 차머스(Snake Charmers)는 ethPM 레지스트리 탐색기를 유지 관리하여 레지스트리 URI를 얻을 수 있습니다.

예시

스네이크 차머스의 Zeppelin 레지스트리에서 제공되는 OpenZeppelin의 Math 패키지를 설치하려면:

$ brownie pm install ethpm://zeppelin.snakecharmers.eth:1/math@1.0.0

스네이크 차머스의 DeFi 레지스트리에서 Compound Protocol의 버전 2를 설치하려면:

$ brownie pm install ethpm://defi.snakecharmers.eth:1/compound@1.1.0

패키지 작업

설치된 패키지 보기

brownie pm list를 사용하여 현재 설치된 패키지를 볼 수 있습니다. 위에서 제공된 모든 예제를 설치한 후, 출력은 다음과 같습니다.

$ brownie pm list
Brownie - 이더리움을 위한 파이썬 개발 프레임워크

현재 설치된 패키지는 다음과 같습니다.

OpenZeppelin
└─OpenZeppelin/openzeppelin-contracts@3.0.0

aragon
└─aragon/aragonOS@4.0.0

zeppelin.snakecharmers.eth
└─zeppelin.snakecharmers.eth/access@1.0.0

defi.snakecharmers.eth
└─defi.snakecharmers.eth/compound@1.1.0

패키지 복제

brownie pm clone [경로]를 사용하여 패키지의 내용을 다른 폴더로 복사합니다. [경로]가 지정되지 않은 경우 패키지는 현재 디렉토리에 복제됩니다. 이것은 패키지의 파일 구조를 탐색하거나 기존 패키지 위에 프로젝트를 빌드하려는 경우에 유용합니다.

Aragon 패키지를 현재 폴더로 복사하려면:

$ brownie pm clone aragon/aragonOS@4.0.0

프로젝트에서 패키지 사용하기

패키지에서 소스 가져오기

프로젝트 내 소스를 가져오는 것과 마찬가지로 설치된 패키지에서 소스를 가져올 수 있습니다. 루트 경로는 패키지 이름을 기반으로하며 brownie pm list를 통해 얻을 수 있습니다.

예를 들어, OpenZeppelin contracts에서 SafeMath를 가져오려면:

import "OpenZeppelin/openzeppelin-contracts@3.0.0/contracts/math/SafeMath.sol";

프로젝트 구성 파일의 remappings 필드를 사용하여 가져오기 경로를 수정할 수 있습니다. 자세한 내용은 설치된 패키지 리매핑을 참조하십시오.

테스트에서 패키지 사용하기

pm fixture는 테스트 중 설치된 패키지에 액세스 할 수 있습니다. 프로젝트 ID로 호출하면 Project 객체를 반환합니다:

def test_with_compound_token(pm):
    compound = pm('defi.snakecharmers.eth/compound@1.1.0').CToken

자세한 정보는 유닛 테스트 문서를 참조하십시오.

프로젝트 종속성 선언

종속성은 프로젝트 구성 파일에 dependencies 필드를 추가하여 선언됩니다.

dependencies:
    - aragon/aragonOS@4.0.0
    - defi.snakecharmers.eth/compound@1.1.0

Brownie는 프로젝트 컴파일 전에 나열된 종속성을 설치하려고 시도합니다. 이는 프로젝트가 지역 환경 외부에서 사용될 수 있는 경우 유용합니다.

 

728x90
반응형
LIST

'블록체인 (Block Chain) > 이더리움' 카테고리의 다른 글

[브라우니 (Brownie)] 9. 계정으로 작업하기  (0) 2023.06.16
[브라우니 (Brownie)] 8. 브라우니 GUI  (0) 2023.06.16
[브라우니 (Brownie)] 6. 컨트랙트와 상호작용하기  (0) 2023.06.16
[브라우니 (Brownie)] 5. 컨트랙트 컴파일하기  (0) 2023.06.16
[브라우니 (Brownie)] 4. 프로젝트 구조  (0) 2023.06.16
'블록체인 (Block Chain)/이더리움' 카테고리의 다른 글
  • [브라우니 (Brownie)] 9. 계정으로 작업하기
  • [브라우니 (Brownie)] 8. 브라우니 GUI
  • [브라우니 (Brownie)] 6. 컨트랙트와 상호작용하기
  • [브라우니 (Brownie)] 5. 컨트랙트 컴파일하기
gsroot
gsroot
gsrootgsroot 님의 블로그입니다.
gsroot
gsroot
gsroot
전체
오늘
어제
  • 분류 전체보기 (126)
    • 파이썬 (Python) (3)
    • 데이터 과학 (Data Science) (29)
      • 데이터브릭스 (11)
      • Apache Superset (9)
    • 인공지능 (AI) (43)
      • 머신러닝 (ML) (19)
      • LLM (8)
      • MCP (8)
      • OpenAI Agents SDK (7)
    • 블록체인 (Block Chain) (37)
      • 이더리움 (36)
      • 코스모스 (0)
    • 웹 (Web) 개발 (9)
    • 앱 (App) 개발 (0)
    • 데브옵스 (DevOps) (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 블록체인
  • GPT
  • Superset
  • 데이터 과학
  • cursor
  • 브라우니
  • 데이터 시각화
  • 선형회귀
  • LLM
  • ci/cd
  • DevOps
  • 자연어 처리
  • MCP
  • Ai
  • openai agents sdk
  • cognosys
  • 머신러닝
  • 데이터브릭스
  • NLP
  • 스마트컨트랙트
  • claude
  • Python
  • 이더리움
  • 파이썬
  • FastAPI
  • 자동화
  • 솔리디티
  • 웹 개발
  • Redis Sentinel
  • redis

최근 댓글

최근 글

반응형
250x250
hELLO · Designed By 정상우.
gsroot
[브라우니 (Brownie)] 7. 브라우니 패키지 관리자
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.