그동안 소개한 파이썬을 이용한 BSC Smart Contract 관련 글을 모두 모아서 pancakeswap에서 채굴 중인 pool 중 특정 수량 이상 harvest된 pool에 있는 cake을 harvest한 후 정해놓은 syrup 풀에 deposit하는 파이썬 프로그램을 완성하였습니다. 이제는 파이썬 프로그램에 규칙을 등록해놓으면 알아서 harvest하고 deposit할 수 있습니다.

 

소스는 아래 guthub에 있습니다.

 

github.com/multizone-quant/DeFi/blob/main/DeFi_harvest_deposit

 

사용법은 간단합니다. 

아래 부분에 원하는 값을 입력하시면 됩니다. my_addr는 본인이 사용하는 eth주소, my_priv는 해당 주소의 private key입니다. claim, deposit을 하기 위해서는 private key가 필요합니다.

 

POOL_NAME는 수정할 필요가 없고, MIN_HARVEST_NUM 값은 claim할 최소 갯수입니다. 이렇게 claim한 cake은 DEPOSIT_POOL에 지정된 pool에 deposit합니다.

 

현재 test한 syrup풀은 alice이며 본인이 사용하는 syrup pool의 smart contract를 찾아서 추가하면 됩니다.

 

# 수정할 부분
my_addr = 'my eth address'
my_priv = "my_addr's priavate key"

POOL_NAME = 'pancake-masterchef'
MIN_HARVEST_NUM = 2.3  # harvest할 최소 수량
DEPOSIT_POOL = 'syrup-alice'  # harvest한 cake을 저장할 pool

# 수정할 부분 끝

새로운 syrup 풀을 추가하는 방법은 bscscan.com에서 pool의 주소를 확인한 후 sc_addr에 추가하면 됩니다.

 

sc_addr = {
    'bnb-busd' : '0x1B96B92314C44b159149f7E0303511fB2Fc4774f',
    'cake-bnb' : '0xA527a61703D82139F8a06Bc30097cC9CAA2df5A6',
    'ust-nflx' : '0xF609ade3846981825776068a8eD7746470029D1f',
    'syrup-alice' : '0x4C32048628D0d32d4D6c52662FB4A92747782B56',
}

contract 별로 abi가 별도로 존재하는데, 이것을 자동으로 가져오는 함수도 발견하였습니다. 관련 함수는 fetch_abi() 입니다. 한번 사용한 contract는 컴퓨터 내부에 저장하고 있으므로, 이후에는 빠른 처리가 가능합니다.

 

pancakeswap masterchef에 있는 pool 중 BRY-BNB에 있는 BRY smart contract가 조금 이상합니다. name() 항목이 abi가 존재하지 않아 오류가 발생하더군요. 그래서 cake-bnb abi를 이용하여 모든 pool에 대하여 사용하는 방식으로 오류를 회피하였습니다.

 

코드는 간단하므로, 자세한 설명을 생략합니다. 

 

실행한 결과입니다. 2.3개이상 채굴한 두 pool이 claim되었습니다.

 

 

그 결과를 bscscan에서 확인해보겠습니다. 풀 2개에서 cake이 claim되었고, alice pool에 deposit되었습니다. 그동안 alice pool에서 채굴 중이던 alice도 claim되었군요. 이건 자동으로 이루어지는 것입니다.

 

 

 

다음 편에서는 cake 가격이 특정 가격 이상이면 시럽에 deposit하지않고 busd로 swap하는 코드까지 소개하도록 하겠습니다.

 

반응형

설정

트랙백

댓글