def runLambda(self, lambdaToExecute): sp.set_type(lambdaToExecute, sp.TLambda(sp.TUnit, sp.TList(sp.TOperation))) # Can only be called by the DAO. sp.verify(sp.sender == self.data.daoAddress, "NOT_DAO") # Execute Request operations = lambdaToExecute(sp.unit) sp.set_type(operations, sp.TList(sp.TOperation)) sp.add_operations(operations)
def token_metadata(self, params): sp.verify( ~self.is_paused() ) sp.set_type(params, sp.TRecord( token_ids = sp.TList(sp.TNat), handler = sp.TLambda( sp.TList(self.token_meta_data.get_type()), sp.TUnit) ).layout(("token_ids", "handler"))) def f_on_request(req): self.token_meta_data.set_type_and_layout(self.data.token_metadata[req]) sp.result(self.data.token_metadata[req]) sp.compute(params.handler(params.token_ids.map(f_on_request)))
def get_type(): return sp.TRecord(execution_payload=sp.TLambda(sp.TUnit, sp.TList(sp.TOperation)), signatures=sp.TMap(sp.TKeyHash,sp.TSignature)).layout(("execution_payload","signatures"))
def get_signing_payload_type(): return sp.TRecord(chain_id=sp.TChainId, self_address=sp.TAddress, nonce=sp.TNat, execution_payload=sp.TLambda(sp.TUnit, sp.TList(sp.TOperation))).layout(("chain_id",("self_address",("nonce","execution_payload"))))