def balance_of(self, balance_of_request):
     """As per FA2 standard, takes balance_of requests and reponds on the provided callback contract"""
     sp.set_type(balance_of_request, BalanceOf.get_type())
     
     responses = sp.local("responses", sp.set_type_expr(sp.list([]),BalanceOf.get_response_type()))
     sp.for request in balance_of_request.requests:
         sp.verify(self.data.token_metadata.contains(request.token_id), message = FA2ErrorMessage.TOKEN_UNDEFINED)
         responses.value.push(sp.record(request = request, balance = self.data.ledger.get(LedgerKey.make(request.owner, request.token_id),0)))
 def get_redeem_addresses(self, get_redeem_address_request):
     """As per FA2 standard, takes balance_of requests and reponds on the provided callback contract"""
     sp.set_type(get_redeem_address_request, RedeemAddress.get_request_type())
     
     responses = sp.local("responses", sp.set_type_expr(sp.list([]),RedeemAddress.get_batch_type()))
     sp.for token_id in get_redeem_address_request.token_ids:
         sp.verify(self.data.token_metadata.contains(token_id), message = FA2ErrorMessage.TOKEN_UNDEFINED)
         responses.value.push(sp.record(token_id = token_id, address = self.data.token_context[token_id].redeem_address))
Exemplo n.º 3
0
def test():
    c1 = Bls12_381(
        g1=sp.bls12_381_g1(
            "0x8ce3b57b791798433fd323753489cac9bca43b98deaafaed91f4cb010730ae1e38b186ccd37a09b8aed62ce23b699c48"
        ),
        g2=sp.bls12_381_g2(
            "0x8647aa9680cd0cdf065b94e818ff2bb948cc97838bcee987b9bc1b76d0a0a6e0d85db4e9d75aaedfc79d4ea2733a21ae0579014de7636dd2943d45b87c82b1c66a289006b0b9767921bb8edd3f6c5c5dec0d54cd65f61513113c50cc977849e5"
        ),
        fr=sp.bls12_381_fr(
            "0x60c8333ef28e1b3b7fc487952b1e21372bd43056e8cb993625735b645e8030b7"
        ),
        mulResult=sp.none,
        checkResult=sp.none)

    scenario = sp.test_scenario()
    scenario += c1

    scenario += c1.add(
        g1=sp.bls12_381_g1(
            "0x8ce3b57b791798433fd323753489cac9bca43b98deaafaed91f4cb010730ae1e38b186ccd37a09b8aed62ce23b699c48"
        ),
        g2=sp.bls12_381_g2(
            "0x8647aa9680cd0cdf065b94e818ff2bb948cc97838bcee987b9bc1b76d0a0a6e0d85db4e9d75aaedfc79d4ea2733a21ae0579014de7636dd2943d45b87c82b1c66a289006b0b9767921bb8edd3f6c5c5dec0d54cd65f61513113c50cc977849e5"
        ),
        fr=sp.bls12_381_fr(
            "0x60c8333ef28e1b3b7fc487952b1e21372bd43056e8cb993625735b645e8030b7"
        ))

    scenario += c1.negate()
    scenario += c1.toInt()

    scenario += c1.mul(
        sp.pair(
            sp.bls12_381_fr(
                "0x8ce3b57b791798433fd323753489cac9bca43b98deaafaed91f4cb010730ae1e38b186ccd37a09b8aed62ce23b699c48"
            ),
            sp.bls12_381_fr(
                "0x8ce3b57b791798433fd323753489cac9bca43b98deaafaed91f4cb010730ae1e38b186ccd37a09b8aed62ce23b699c"
            )))

    scenario += c1.pairing_check(
        sp.list([
            sp.pair(
                sp.bls12_381_g1(
                    "0x8ce3b57b791798433fd323753489cac9bca43b98deaafaed91f4cb010730ae1e38b186ccd37a09b8aed62ce23b699c48"
                ),
                sp.bls12_381_g2(
                    "0x8647aa9680cd0cdf065b94e818ff2bb948cc97838bcee987b9bc1b76d0a0a6e0d85db4e9d75aaedfc79d4ea2733a21ae0579014de7636dd2943d45b87c82b1c66a289006b0b9767921bb8edd3f6c5c5dec0d54cd65f61513113c50cc977849e5"
                )),
            sp.pair(
                sp.bls12_381_g1(
                    "0x8ce3b57b791798433fd323753489cac9bca43b98deaafaed91f4cb010730ae1e38b186ccd37a09b8aed62ce23b699c48"
                ),
                sp.bls12_381_g2(
                    "0x8647aa9680cd0cdf065b94e818ff2bb948cc97838bcee987b9bc1b76d0a0a6e0d85db4e9d75aaedfc79d4ea2733a21ae0579014de7636dd2943d45b87c82b1c66a289006b0b9767921bb8edd3f6c5c5dec0d54cd65f61513113c50cc977849e5"
                ))
        ]))
Exemplo n.º 4
0
 def __init__(self):
     self.init(
         time_out = sp.timestamp(0),
         votes = sp.map(tkey = sp.TAddress, tvalue = sp.TString),
         parties = sp.list(t=sp.TAddress),
         immutability = False,
         proposal = '',
         ocasion = '',
         ammendment = ''
         )
Exemplo n.º 5
0
 def endContract(self, params):
     self.data.houseaddress = params._houseAddress
     sp.verify(self.data.owner == sp.sender,
               message='Only Owner Can End Contract.')
     sp.send(self.data.propertyList[self.data.houseaddress].tenant,
             self.data.propertyList[self.data.houseaddress].deposit)
     self.data.propertyList[self.data.houseaddress].tenant = self.data.owner
     self.data.propertyList[self.data.houseaddress].active = False
     self.data.propertyList[self.data.houseaddress].dispute = False
     self.data.propertyList[self.data.houseaddress].paidRents = sp.list()
Exemplo n.º 6
0
 def __init__(self):
     self.init(dates=sp.list([]), entries=sp.list([]), authors=sp.list([]))
 def __init__(self):
     self.init(tokenList=sp.list(t=sp.TAddress),
               tokenToExchange=sp.big_map(tkey=sp.TAddress,
                                          tvalue=sp.TAddress),
               exchangeToToken=sp.big_map(tkey=sp.TAddress,
                                          tvalue=sp.TAddress))
Exemplo n.º 8
0
 def __init__(self, initialNonce, initialHashedProof):
     self.init(
         nonce=initialNonce,
         hashedProof=initialHashedProof,
         SecretStore=sp.list(t=sp.TString),
     )
Exemplo n.º 9
0
        t = sp.TRecord(owner=sp.TAddress, operator=sp.TAddress, token_id=sp.TNat)
        t = t.layout(("owner", ("operator", "token_id")))

        nft_contract = sp.contract(sp.TList(
            sp.TVariant(
              add_operator=t,
              remove_operator=t
            )
        ),
        self.data.hen_nft_address,
        entry_point="update_operators").open_some()

        sp.transfer(
            sp.list([sp.variant("add_operator", sp.record(
                owner=sp.self_address,
                operator=self.data.hen_address,
                token_id=swap_info.objkt_id
            ))]),
            sp.mutez(0),
            nft_contract
        )

        # Call into HEN contract
        c = sp.contract(
            sp.TRecord(
                creator=sp.TAddress,
                objkt_amount=sp.TNat,
                objkt_id=sp.TNat,
                royalties=sp.TNat,
                xtz_per_objkt=sp.TMutez
            ), 
Exemplo n.º 10
0
    def test():
        scenario = sp.test_scenario()
        scenario.h1("Simple ST12 Contract")

        # sp.test_account generates ED25519 key-pairs deterministically:
        admin = sp.test_account("AccessControl")
        alice = sp.test_account("Alice")
        bob = sp.test_account("Robert")

        # Let's display the accounts:
        scenario.h2("Accounts")
        scenario.show([admin, alice, bob])

        c1 = ST12(
            config = config,
            administrators = sp.set([admin.address]),
            metadata = sp.map(l =  {
                # Remember that michelson wants map already in ordered
                "decimals" : sp.bytes_of_string("%d" % 18),
                "name" : sp.bytes_of_string("Test Token"),
                "symbol" : sp.bytes_of_string("Test")
            })
        )

        scenario += c1
            
        scenario.h2("Admin mints a few coins")
        scenario += c1.mint(sp.list([sp.record(address=alice.address, amount=12)])).run(sender=admin)
        scenario += c1.mint(sp.list([
            sp.record(address=alice.address, amount=3),
            sp.record(address=alice.address, amount=3),
            ])).run(sender=admin)
        scenario.h2("Alice transfers her own tokens to Bob")
        scenario += c1.transfer(from_=alice.address, to_=bob.address, value=4).run(
            sender=alice
        )
        scenario.verify(c1.data.ledger[alice.address].balance == 14)
        scenario.h2("Bob tries to transfer from Alice but he doesn't have her approval")
        scenario += c1.transfer(from_=alice.address, to_=bob.address, value=4).run(
            sender=bob, valid=False
        )
        scenario.h2("Alice approves Bob and Bob transfers")
        scenario += c1.approve(spender=alice.address, value=5).run(
            sender=alice
        )
        scenario += c1.transfer(from_=alice.address, to_=bob.address, value=4).run(
            sender=admin
        )
        scenario.h2("Bob tries to over-transfer from Alice")
        scenario += c1.transfer(from_=alice.address, to_=bob.address, value=4).run(
            sender=bob, valid=False
        )
        scenario.h2("Admin burns Bob token")
        scenario += c1.burn(sp.list([sp.record(address=bob.address, amount=1)])).run(sender=admin)
        scenario.verify(c1.data.ledger[alice.address].balance == 10)
        scenario.h2("Alice tries to burn Bob token")
        scenario += c1.burn(sp.list([sp.record(address=bob.address, amount=1)])).run(
            sender=alice, valid=False
        )
        scenario.h2("Admin pauses the contract and Alice cannot transfer anymore")
        scenario += c1.set_paused(True).run(sender=admin)
        scenario += c1.transfer(from_=alice.address, to_=bob.address, value=4).run(
            sender=alice, valid=False
        )
        scenario.verify(c1.data.ledger[alice.address].balance == 10)
        scenario.h2("Admin transfers while on pause")
        scenario += c1.transfer(from_=alice.address, to_=bob.address, value=1).run(
            sender=admin
        )
        scenario.h2("Admin unpauses the contract and transferts are allowed")
        scenario += c1.set_paused(False).run(sender=admin)
        scenario.verify(c1.data.ledger[alice.address].balance == 9)
        scenario += c1.transfer(from_=alice.address, to_=bob.address, value=1).run(
            sender=admin
        )

        scenario.verify(c1.data.total_supply == 17)
        scenario.verify(c1.data.ledger[alice.address].balance == 8)
        scenario.verify(c1.data.ledger[bob.address].balance == 9)
        
        scenario.h2("Burn")
        scenario += c1.burn(
            sp.list([
                sp.record(
                address=alice.address,
                amount=3
            )
            ])
        ).run(sender=admin)
        
        scenario += c1.burn(
            sp.list(
                [
                    sp.record(
                        address=alice.address,
                        amount=3
                    )
                ]
            )
        ).run(sender=admin)

        scenario.table_of_contents()
Exemplo n.º 11
0
 def __init__(self):
     self.init(limit = 5, ticketToAddress = sp.map(tkey = sp.TNat, tvalue = sp.TAddress), id = 0, previousWinners = sp.list(t = sp.TAddress))
Exemplo n.º 12
0
 def test():
     scenario = sp.test_scenario()
     
     scenario.h1("VestingEscrowMinterBurnerWallet")
     
     admin = sp.test_account("Token Admin")
     alice = sp.test_account("Alice")
     bob = sp.test_account("Bob")
     
     fa12 = ST12(admin.address)
     fa2 = ST2(admin.address)
     v = VestingEscrowMinterBurnerWallet()
     
     scenario += fa12
     scenario += fa2
     scenario += v
     scenario += v.vest(
         sp.list([
             sp.record(
                 schedule_name = "4 Months Cliff Vesting From 12-12-2020",
                 beneficiery = alice.address, 
                 start = sp.timestamp(0), 
                 cliff = sp.timestamp(5), 
                 end = sp.timestamp(10), 
                 vesting_amount = 100,
                 token_address = fa2.address,
                 token_id = sp.some(0),
                 metadata = sp.some(sp.map({
                     "decimals": sp.bytes_of_string("%d" % 18),
                     "name": sp.bytes_of_string("Test"),
                     "symbol": sp.bytes_of_string("TEST")
                 }))
             )
         ])
     )
     
     scenario += v.claim().run(sender = alice, now = sp.timestamp(5))
     scenario += v.claim().run(sender = alice, now = sp.timestamp(7))
     scenario += v.claim().run(sender = alice, now = sp.timestamp(10))
     scenario += v.claim().run(sender = alice, now = sp.timestamp(10), valid=False)
     scenario += v.claim().run(sender = alice, now = sp.timestamp(15), valid=False)
     
     scenario += v.vest(
         sp.list([
             sp.record(
                 schedule_name = "5 Months Cliff Vesting From 12-12-2020",
                 beneficiery = alice.address, 
                 start = sp.timestamp(0), 
                 cliff = sp.timestamp(5), 
                 end = sp.timestamp(10), 
                 vesting_amount = 200,
                 token_address = fa12.address,
                 token_id = sp.none,
                 metadata = sp.none
             ),
             sp.record(
                 schedule_name = "8 Months Cliff Vesting From 12-12-2020",
                 beneficiery = bob.address, 
                 start = sp.timestamp(0), 
                 cliff = sp.timestamp(5), 
                 end = sp.timestamp(10), 
                 vesting_amount = 200,
                 token_address = fa12.address,
                 token_id = sp.none,
                 metadata = sp.none
             )
         ])
     )
     
     scenario += v.changeBeneficiery(
         sp.list([
             sp.record(
                 schedule_name = "8 Months Cliff Vesting From 12-12-2020",
                 from_ = bob.address, 
                 to_ = alice.address
             )
         ])
     ).run(sender = alice, valid = False)
     
     scenario += v.changeBeneficiery(
         sp.list([
             sp.record(
                 schedule_name = "8 Months Cliff Vesting From 12-12-2020",
                 from_ = bob.address, 
                 to_ = alice.address
             )
         ])
     ).run(sender = admin)
     
     scenario += v.changeBeneficieryForAll(
         sp.list([
             sp.record(
                 from_ = alice.address, 
                 to_ = bob.address
             )
         ])
     ).run(sender = alice, valid = False)
     
     scenario += v.changeBeneficieryForAll(
         sp.list([
             sp.record(
                 from_ = alice.address, 
                 to_ = bob.address
             )
         ])
     ).run(sender = admin)
     sp.verify(self.token_id_set.contains(self.data.all_tokens, params.token_id), "TOKEN ID NOT FOUND")
     
     # Make sure that NFT token id is listed for bidding
     sp.verify(self.data.offer.contains(params.token_id) == True, "NFT TOKEN ID NOT OPEN FOR BIDDING")
     
     # Make sure NFT token id is up for sale
     sp.verify(self.data.offer[params.token_id].is_for_sale == True, "NFT TOKEN ID IS NOT UP FOR SALE")
     
     # Make sure that bidding amount is more than min_offer_price
     sp.verify(self.data.offer[params.token_id].min_sale_value < sp.amount, "INSUFFICIENT BIDDING VALUE")
     
     # Add user to bidding list for the NFT with the token id
     sp.if self.data.bid.contains(params.token_id):
         self.data.bid[params.token_id].push(sp.record(has_bid = True, bidder = sp.sender, bid_value = sp.amount))
     sp.else:
         self.data.bid[params.token_id] = sp.list([sp.record(has_bid = True, bidder = sp.sender, bid_value = sp.amount)])
     
 
 @sp.entry_point
 def offer_bot_for_sale(self, params):
     # Make sure that sp.sender has admin access otherwise don't proceed forward
     # Make sure that contract isn't paused
     
     sp.set_type(params.token_id, sp.TNat)
     sp.set_type(params.min_sale_price, sp.TMutez)
     
     # Make sure that the NFT token id is already present
     sp.verify(self.token_id_set.contains(self.data.all_tokens, params.token_id), "TOKEN ID NOT FOUND")
     
     # Make user that min_sale_value is more than zero mutez
     sp.verify(params.min_sale_price > sp.mutez(0), "MIN VALUE SHOULD BE MORE THAN ZERO")
Exemplo n.º 14
0
 def checkHouseAlreadyExits(self, params):
     sp.if ~(self.data.propertyList.contains(params._houseAddress)):
         self.data.propertyList[params._houseAddress] = sp.record(tenant=self.data.owner, rent=sp.tez(
             params._rent), deposit=sp.tez(params._deposit), active=sp.bool(False), paidRents=sp.list(), dispute=False)
Exemplo n.º 15
0
 def checkDate(self, date):
    sp.if ~(self.data.attendanceMap.contains(date)):
       self.data.attendanceMap[date] = sp.list(t=sp.TString)
Exemplo n.º 16
0
    def balance_of(self, balance_of_request):
        sp.set_type(balance_of_request, BalanceOfRequest.get_type())

        responses = sp.local("responses", sp.set_type_expr(sp.list([]),BalanceOfRequest.get_response_type()))
        sp.for request in balance_of_request.requests:
            responses.value.push(sp.record(request = request, balance = self.data.ledger.get(LedgerKey.make(request.owner, request.token_id),0)))
Exemplo n.º 17
0
 def __init__(self):
     self.init(last_sum=0,
               last_acc="",
               last_nonces=sp.list(t=sp.TRecord(
                   owner=sp.TAddress,
                   nonce=sp.TNat)))
Exemplo n.º 18
0
 def fa2_transfer(self, fa2, from_, to_, objkt_id, objkt_amount):
     c = sp.contract(sp.TList(sp.TRecord(from_=sp.TAddress, txs=sp.TList(sp.TRecord(amount=sp.TNat, to_=sp.TAddress, token_id=sp.TNat).layout(("to_", ("token_id", "amount")))))), fa2, entry_point='transfer').open_some()
     sp.transfer(sp.list([sp.record(from_=from_, txs=sp.list([sp.record(amount=objkt_amount, to_=to_, token_id=objkt_id)]))]), sp.mutez(0), c)
Exemplo n.º 19
0
 def __init__(self, admin, fee):
     self.init(cadmin=admin,
               fees=fee,
               funds=sp.tez(0),
               transfers=sp.list(t=pay_type),
               lock=False)