def add_items(self, params): sp.verify(self.data.certifiers.contains(params.id), message ='Certifier with ID non-existent') sp.verify_equal(sp.sender, self.data.certifiers[params.id], message ="This account may be expired, use different account.") sp.for product in params.products.items(): sp.if self.data.products.contains(product.key): sp.verify_equal(params.id, self.data.products[product.key].certifier, message ="This product has already been registered by another certifier institution.") self.data.products[product.key].metahash.push(product.value)
def placeBet(self,params): sp.verify(self.data.betData.contains(params.betType), message="incorrect bet type") sp.verify_equal(sp.amount,sp.mutez(self.data.betSize[params.betType]),message="incorrect amount sent to the entry point") # multiplied seed by 10000 to retain last 6 digits of timestamp uuid = self.data.uuid self.data.uuid = self.data.uuid+1 self.data.tempData[uuid] = sp.record(seed=params.seed,sender=sp.sender,betType=params.betType) entryAddress = sp.to_address(sp.self_entry_point(entry_point='placeBetFromOro')) contract = sp.contract(sp.TRecord(uuid=sp.TNat,entryAddress=sp.TAddress),self.data.oracleAddress,entry_point="getDataFromOro").open_some() sp.transfer(sp.record(uuid=uuid,entryAddress=entryAddress),sp.mutez(5000),contract)
def setExpiry(self, params): sp.set_type(params, sp.TRecord(address=sp.TAddress, seconds=sp.TNat, permit=sp.TOption( sp.TBytes))).layout(("address", ("seconds", "permit"))) sp.verify(~self.data.paused) sp.verify(params.seconds <= self.data.max_expiry, "MAX_SECONDS_EXCEEDED") sp.verify_equal(params.address, sp.sender, message="NOT_AUTHORIZED") sp.if params.permit.is_some(): some_permit = params.permit.open_some() sp.verify(self.data.permits.contains( sp.pair(params.address, some_permit)), "PERMIT_NONEXISTENT") permit_submission_timestamp = self.data.permits[sp.pair( params.address, some_permit)] sp.if self.data.permit_expiries.contains(sp.pair(params.address, some_permit)) & self.data.permit_expiries[sp.pair(params.address, some_permit)].is_some(): permit_expiry = self.data.permit_expiries[sp.pair( params.address, some_permit)].open_some() sp.verify(sp.as_nat(sp.now - permit_submission_timestamp) < permit_expiry, "PERMIT_REVOKED")
def setExpiry(self, params): sp.set_type(params, sp.TPair(sp.TAddress, sp.TPair(sp.TNat, sp.TOption( sp.TBytes)))) address = sp.fst(params) new_expiry = sp.fst(sp.snd(params)) possible_bytes = sp.snd(sp.snd(params)) sp.verify(new_expiry <= self.data.permit_data.max_expiry, self.error_message.expiry_exceeds_max()) sp.verify_equal(address, sp.sender, message=self.error_message.user_unauthorized()) sp.if possible_bytes.is_some(): some_permit = possible_bytes.open_some() permit_key = sp.pair(address, some_permit) sp.verify(self.data.permit_data.permits.contains( permit_key), self.error_message.permit_nonexistent()) permit_submission_timestamp = self.data.permit_data.permits[permit_key] effective_expiry = self.getEffectiveExpiry(permit_key) sp.verify(sp.as_nat(sp.now - permit_submission_timestamp) < effective_expiry, self.error_message.permit_revoked()) self.data.permit_data.permit_expiries[permit_key] = sp.some(new_expiry)
def assert_spare(self): sp.verify_equal(self.data.spare, sp.sender, 'Invalid Spare!')
def assert_admin(self): sp.verify_equal(self.data.admin, sp.sender, 'Invalid Admin!')
def change_manager(self, params): sp.verify_equal(sp.sender, self.data.spare, message ="Unauthorized account. Only spare can peform this action.") self.data.manager = params.manager
def assert_manager(self): sp.verify_equal(sp.sender, self.data.manager, message ="Unauthorized account. Only manager can peform this action.")
def remove_registrar(self, params): sp.verify_equal(sp.sender, self.data.manager, message="Unauthorized Action. You are not manager.") self.data.registrars.remove(params.registrar)