Skip to content

Commit

Permalink
edit scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
VictorChepkasov committed Aug 30, 2023
1 parent 2c124c7 commit 73faf73
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 73 deletions.
6 changes: 3 additions & 3 deletions scripts/metadata/1.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
"attributes": [
{
"trait_type": "Holder address",
"value": "0x1d9458A5F6A5207478207fA4e3C491A9B20d434F"
"value": "0xE4B9efD42Ba4d46d5D4CAe1fa71950f10f01B65e"
},
{
"trait_type": "Debtor address",
"value": "0x6178FF3747b0d7B7D18CBeF99D82ed789CE05182"
"value": "0x4cD3d2f42b651b5bc543221DAF1F138147D92387"
},
{
"trait_type": "NFT id",
Expand All @@ -28,7 +28,7 @@
{
"display_type": "date",
"trait_type": "Date of registration",
"value": 1692351515
"value": 6935975920661
},
{
"display_type": "date",
Expand Down
2 changes: 1 addition & 1 deletion scripts/metadata_hashes.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
["<https://ipfs.io/ipfs/QmencxBbzMsaa19xTYwap8zKfetK4k2JugPMrgfg9eiH8X/>", "<https://ipfs.io/ipfs/QmencxBbzMsaa19xTYwap8zKfetK4k2JugPMrgfg9eiH8X/>", "<https://ipfs.io/ipfs/QmencxBbzMsaa19xTYwap8zKfetK4k2JugPMrgfg9eiH8X/>"]
["<https://ipfs.io/ipfs/QmencxBbzMsaa19xTYwap8zKfetK4k2JugPMrgfg9eiH8X/>", "<https://ipfs.io/ipfs/QmencxBbzMsaa19xTYwap8zKfetK4k2JugPMrgfg9eiH8X/>", "<https://ipfs.io/ipfs/QmencxBbzMsaa19xTYwap8zKfetK4k2JugPMrgfg9eiH8X/>", "<https://ipfs.io/ipfs/QmencxBbzMsaa19xTYwap8zKfetK4k2JugPMrgfg9eiH8X/>", "<https://ipfs.io/ipfs/QmencxBbzMsaa19xTYwap8zKfetK4k2JugPMrgfg9eiH8X/>", "<https://ipfs.io/ipfs/QmencxBbzMsaa19xTYwap8zKfetK4k2JugPMrgfg9eiH8X/>"]
60 changes: 60 additions & 0 deletions scripts/nft_promissory_class.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
from brownie import PromissoryNFT, Promissory, accounts

class Promissory:
def __init__(self, _promissory):
self.promissory = _promissory
self.holder = _promissory.promissory()[0]
self.token_id = _promissory.promissory()[2]

def set_holder_consent(self, _from):
self.promissory.setHolderConsent({
'from': _from,
'priority_fee': '0.2 gwei'
})
print('Holder consent saved!')

def set_debtor_consent(self, _from):
self.promissory.setDebtorConsent({
'from': _from,
'priority_fee': '0.2 gwei'
})
print('Debtor consent saved!')

# Оплата векселя
# Требование:
# - _from == debtor
def pay_promissory(self, _debtorAddress):
self.promissory.payPromissory({
'from': _debtorAddress,
'value': '1100 wei',
'priority_fee': '10 wei'
})
# update_metadata(_from, token_id)
PromissoryNFT[-1].burnCollectible(self.token_id, {
'from': self.holder,
'priority_fee': '10 wei'
})
exist = PromissoryNFT[-1].existsCollectible(self.token_id, {
'from': self.holder,
'priority_fee': '10 wei'
})
assert exist == False
self.promissory.killContract({
'from': self.holder,
'priority_fee': '10 wei'
})
return exist

# Передача токена другому лицу (_to)
# Требование:
# - Разрешение распроряжаться токеном (approve) у передающего (owner)
# - Токен должен сущствовать
def transfer_token(self, to):
PromissoryNFT[-1].transferFrom(self.holder, to, self.token_id, {
'from': self.holder,
'priority_fee': '10 wei'
})
self.promissory.setNewHolder(to, {
'from': self.holder,
'priority_fee': '10 wei'
})
62 changes: 3 additions & 59 deletions scripts/nft_promissory.py → scripts/token_scripts.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ def deploy_promissory_nft(_from):

# Получение адреса контракта векселя по id,
def get_promissory(_from, promissory_id):
info = PromissoryNFT[-1].getPromissory(promissory_id, {
promissory = PromissoryNFT[-1].getPromissory(promissory_id, {
'from': _from
})
return Promissory.at(info)
return Promissory.at(promissory)

# Создание контракта, метаданных и выпуск токена
def create_promissory(_from, _debtor, _promissory_commission, _promissory_amount, _date_of_close):
Expand All @@ -47,22 +47,6 @@ def create_promissory(_from, _debtor, _promissory_commission, _promissory_amount
})
print('Token minted!')

def set_holder_consent(_from, token_id):
promissory = get_promissory(_from, token_id)
promissory.setHolderConsent({
'from':_from,
'priority_fee': '0.2 gwei'
})
print('Holder consent saved!')

def set_debtor_consent(_from, token_id):
promissory = get_promissory(_from, token_id)
promissory.setDebtorConsent({
'from':_from,
'priority_fee': '0.2 gwei'
})
print('Debtor consent saved!')

# получение разрешения контракту передавать токен
# _from - владелец токена
# _to - лицо, которому даётся возможность управлять токеном
Expand All @@ -72,44 +56,4 @@ def approve(_from, _to, token_id):
'from': _from,
'priority_fee': '10 wei'
})
print('Approved!')

# Оплата векселя
# Требование:
# - _from == debtor
def pay_promissory(_from, token_id):
promissory = get_promissory(_from, token_id)
promissory.payPromissory({
'from': _from,
'value': '1100 wei',
'priority_fee': '10 wei'
})
# update_metadata(_from, token_id)
PromissoryNFT[-1].burnCollectible(token_id, {
'from': _from,
'priority_fee': '10 wei'
})
exist = PromissoryNFT[-1].existsCollectible(token_id, {
'from': _from,
'priority_fee': '10 wei'
})
promissory.killContract({
'from': _from,
'priority_fee': '10 wei'
})
return exist

# Передача токена другому лицу (_to)
# Требование:
# - Разрешение распроряжаться токеном (approve) у передающего (owner)
# - Токен должен сущствовать
def transfer_token(owner, to, token_id):
PromissoryNFT[-1].transferFrom(owner, to, token_id, {
'from': owner,
'priority_fee': '10 wei'
})
promissory = get_promissory(owner, token_id)
promissory.setNewHolder(to, {
'from': owner,
'priority_fee': '10 wei'
})
print('Approved!')
2 changes: 1 addition & 1 deletion tests/conftest.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import pytest
from brownie import accounts, network
from scripts.promissory import deploy_promissory
from scripts.nft_promissory import deploy_promissory_nft
from scripts.token_scripts import deploy_promissory_nft

@pytest.fixture(scope='session')
def holder():
Expand Down
17 changes: 8 additions & 9 deletions tests/test_nft_promissory.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
import pytest
from brownie import PromissoryNFT, chain
from conftest import *
from scripts.nft_promissory import (
from scripts.nft_promissory_class import *
from scripts.token_scripts import (
get_promissory,
create_promissory,
set_holder_consent,
set_debtor_consent,
pay_promissory,
approve,
transfer_token
)

def test_nft_promissory_deploy(promissory_nft):
Expand All @@ -30,18 +27,20 @@ def test_get_promissory_token_info(holder, debtor, promissory_nft):
def test_pay_promissory(holder, debtor, promissory_nft):
create_promissory(holder, debtor, 10, 1000, 1693335600)
token_id = PromissoryNFT[-1].tokenCounter()
set_holder_consent(holder, token_id)
set_debtor_consent(debtor, token_id)
exist_token = pay_promissory(debtor, token_id)
promissory = Promissory(get_promissory(holder, token_id))
promissory.set_holder_consent(holder)
promissory.set_debtor_consent(debtor)
exist_token = promissory.pay_promissory(debtor)
assert exist_token == False

def test_transfer_token(holder, debtor, third_party, promissory_nft):
create_promissory(holder, debtor, 10, 1000, 1693335600)
token_id = PromissoryNFT[-1].tokenCounter()
promissory = Promissory(get_promissory(holder, token_id))
# _to - лицо, которому передаётся вексель
to = third_party if network.show_active() != 'development' else accounts[2]
approve(holder, PromissoryNFT[-1].address, token_id)
transfer_token(holder, to, token_id)
promissory.transfer_token(to)
# получение ненешнего владельца токена векселя
owner = PromissoryNFT[-1].ownerOf(token_id, {
'from': to,
Expand Down

0 comments on commit 73faf73

Please sign in to comment.