diff --git a/Beacon.Sdk.Sample.Dapp/FA2TokenContract.json b/Beacon.Sdk.Sample.Dapp/FA2TokenContract.json new file mode 100644 index 0000000..54b5736 --- /dev/null +++ b/Beacon.Sdk.Sample.Dapp/FA2TokenContract.json @@ -0,0 +1,3746 @@ +{ + "code": [ + { + "prim": "parameter", + "args": [ + { + "prim": "or", + "args": [ + { + "prim": "or", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "list", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address", + "annots": [ + "%owner" + ] + }, + { + "prim": "nat", + "annots": [ + "%token_id" + ] + } + ] + } + ], + "annots": [ + "%requests" + ] + }, + { + "prim": "contract", + "args": [ + { + "prim": "list", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address", + "annots": [ + "%owner" + ] + }, + { + "prim": "nat", + "annots": [ + "%token_id" + ] + } + ], + "annots": [ + "%request" + ] + }, + { + "prim": "nat", + "annots": [ + "%balance" + ] + } + ] + } + ] + } + ], + "annots": [ + "%callback" + ] + } + ], + "annots": [ + "%balance_of" + ] + }, + { + "prim": "or", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address", + "annots": [ + "%address" + ] + }, + { + "prim": "nat", + "annots": [ + "%amount" + ] + } + ] + }, + { + "prim": "pair", + "args": [ + { + "prim": "map", + "args": [ + { + "prim": "string" + }, + { + "prim": "bytes" + } + ], + "annots": [ + "%metadata" + ] + }, + { + "prim": "nat", + "annots": [ + "%token_id" + ] + } + ] + } + ], + "annots": [ + "%mint" + ] + }, + { + "prim": "address", + "annots": [ + "%set_administrator" + ] + } + ] + } + ] + }, + { + "prim": "or", + "args": [ + { + "prim": "or", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "string", + "annots": [ + "%k" + ] + }, + { + "prim": "bytes", + "annots": [ + "%v" + ] + } + ], + "annots": [ + "%set_metadata" + ] + }, + { + "prim": "bool", + "annots": [ + "%set_pause" + ] + } + ] + }, + { + "prim": "or", + "args": [ + { + "prim": "list", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address", + "annots": [ + "%from_" + ] + }, + { + "prim": "list", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address", + "annots": [ + "%to_" + ] + }, + { + "prim": "pair", + "args": [ + { + "prim": "nat", + "annots": [ + "%token_id" + ] + }, + { + "prim": "nat", + "annots": [ + "%amount" + ] + } + ] + } + ] + } + ], + "annots": [ + "%txs" + ] + } + ] + } + ], + "annots": [ + "%transfer" + ] + }, + { + "prim": "list", + "args": [ + { + "prim": "or", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address", + "annots": [ + "%owner" + ] + }, + { + "prim": "pair", + "args": [ + { + "prim": "address", + "annots": [ + "%operator" + ] + }, + { + "prim": "nat", + "annots": [ + "%token_id" + ] + } + ] + } + ], + "annots": [ + "%add_operator" + ] + }, + { + "prim": "pair", + "args": [ + { + "prim": "address", + "annots": [ + "%owner" + ] + }, + { + "prim": "pair", + "args": [ + { + "prim": "address", + "annots": [ + "%operator" + ] + }, + { + "prim": "nat", + "annots": [ + "%token_id" + ] + } + ] + } + ], + "annots": [ + "%remove_operator" + ] + } + ] + } + ], + "annots": [ + "%update_operators" + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "prim": "storage", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address", + "annots": [ + "%administrator" + ] + }, + { + "prim": "nat", + "annots": [ + "%all_tokens" + ] + } + ] + }, + { + "prim": "pair", + "args": [ + { + "prim": "big_map", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address" + }, + { + "prim": "nat" + } + ] + }, + { + "prim": "nat" + } + ], + "annots": [ + "%ledger" + ] + }, + { + "prim": "big_map", + "args": [ + { + "prim": "string" + }, + { + "prim": "bytes" + } + ], + "annots": [ + "%metadata" + ] + } + ] + } + ] + }, + { + "prim": "pair", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "big_map", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address", + "annots": [ + "%owner" + ] + }, + { + "prim": "pair", + "args": [ + { + "prim": "address", + "annots": [ + "%operator" + ] + }, + { + "prim": "nat", + "annots": [ + "%token_id" + ] + } + ] + } + ] + }, + { + "prim": "unit" + } + ], + "annots": [ + "%operators" + ] + }, + { + "prim": "bool", + "annots": [ + "%paused" + ] + } + ] + }, + { + "prim": "pair", + "args": [ + { + "prim": "big_map", + "args": [ + { + "prim": "nat" + }, + { + "prim": "pair", + "args": [ + { + "prim": "nat", + "annots": [ + "%token_id" + ] + }, + { + "prim": "map", + "args": [ + { + "prim": "string" + }, + { + "prim": "bytes" + } + ], + "annots": [ + "%token_info" + ] + } + ] + } + ], + "annots": [ + "%token_metadata" + ] + }, + { + "prim": "big_map", + "args": [ + { + "prim": "nat" + }, + { + "prim": "nat" + } + ], + "annots": [ + "%total_supply" + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "prim": "code", + "args": [ + [ + { + "prim": "CAST", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "or", + "args": [ + { + "prim": "or", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "list", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address" + }, + { + "prim": "nat" + } + ] + } + ] + }, + { + "prim": "contract", + "args": [ + { + "prim": "list", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address" + }, + { + "prim": "nat" + } + ] + }, + { + "prim": "nat" + } + ] + } + ] + } + ] + } + ] + }, + { + "prim": "or", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address" + }, + { + "prim": "nat" + } + ] + }, + { + "prim": "pair", + "args": [ + { + "prim": "map", + "args": [ + { + "prim": "string" + }, + { + "prim": "bytes" + } + ] + }, + { + "prim": "nat" + } + ] + } + ] + }, + { + "prim": "address" + } + ] + } + ] + }, + { + "prim": "or", + "args": [ + { + "prim": "or", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "string" + }, + { + "prim": "bytes" + } + ] + }, + { + "prim": "bool" + } + ] + }, + { + "prim": "or", + "args": [ + { + "prim": "list", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address" + }, + { + "prim": "list", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address" + }, + { + "prim": "pair", + "args": [ + { + "prim": "nat" + }, + { + "prim": "nat" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "prim": "list", + "args": [ + { + "prim": "or", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address" + }, + { + "prim": "pair", + "args": [ + { + "prim": "address" + }, + { + "prim": "nat" + } + ] + } + ] + }, + { + "prim": "pair", + "args": [ + { + "prim": "address" + }, + { + "prim": "pair", + "args": [ + { + "prim": "address" + }, + { + "prim": "nat" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "prim": "pair", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address" + }, + { + "prim": "nat" + } + ] + }, + { + "prim": "pair", + "args": [ + { + "prim": "big_map", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address" + }, + { + "prim": "nat" + } + ] + }, + { + "prim": "nat" + } + ] + }, + { + "prim": "big_map", + "args": [ + { + "prim": "string" + }, + { + "prim": "bytes" + } + ] + } + ] + } + ] + }, + { + "prim": "pair", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "big_map", + "args": [ + { + "prim": "pair", + "args": [ + { + "prim": "address" + }, + { + "prim": "pair", + "args": [ + { + "prim": "address" + }, + { + "prim": "nat" + } + ] + } + ] + }, + { + "prim": "unit" + } + ] + }, + { + "prim": "bool" + } + ] + }, + { + "prim": "pair", + "args": [ + { + "prim": "big_map", + "args": [ + { + "prim": "nat" + }, + { + "prim": "pair", + "args": [ + { + "prim": "nat" + }, + { + "prim": "map", + "args": [ + { + "prim": "string" + }, + { + "prim": "bytes" + } + ] + } + ] + } + ] + }, + { + "prim": "big_map", + "args": [ + { + "prim": "nat" + }, + { + "prim": "nat" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "prim": "UNPAIR" + }, + { + "prim": "IF_LEFT", + "args": [ + [ + { + "prim": "IF_LEFT", + "args": [ + [ + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "CDR" + }, + { + "prim": "IF", + "args": [ + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "string" + }, + { + "string": "FA2_PAUSED" + } + ] + }, + { + "prim": "FAILWITH" + } + ], + [] + ] + }, + { + "prim": "DUP" + }, + { + "prim": "CAR" + }, + { + "prim": "MAP", + "args": [ + [ + { + "prim": "DUP", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "CDR" + }, + { + "prim": "MEM" + }, + { + "prim": "IF", + "args": [ + [], + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "string" + }, + { + "string": "FA2_TOKEN_UNDEFINED" + } + ] + }, + { + "prim": "FAILWITH" + } + ] + ] + }, + { + "prim": "DUP", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "CDR" + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "PAIR" + }, + { + "prim": "MEM" + }, + { + "prim": "IF", + "args": [ + [ + { + "prim": "DUP", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "CDR" + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "PAIR" + }, + { + "prim": "GET" + }, + { + "prim": "IF_NONE", + "args": [ + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "int" + }, + { + "int": "425" + } + ] + }, + { + "prim": "FAILWITH" + } + ], + [] + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "PAIR" + } + ], + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "nat" + }, + { + "int": "0" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "PAIR" + } + ] + ] + } + ] + ] + }, + { + "prim": "NIL", + "args": [ + { + "prim": "operation" + } + ] + }, + { + "prim": "DIG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "CDR" + }, + { + "prim": "PUSH", + "args": [ + { + "prim": "mutez" + }, + { + "int": "0" + } + ] + }, + { + "prim": "DIG", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "TRANSFER_TOKENS" + }, + { + "prim": "CONS" + } + ], + [ + { + "prim": "IF_LEFT", + "args": [ + [ + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "SENDER" + }, + { + "prim": "COMPARE" + }, + { + "prim": "EQ" + }, + { + "prim": "IF", + "args": [ + [], + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "string" + }, + { + "string": "FA2_NOT_ADMIN" + } + ] + }, + { + "prim": "FAILWITH" + } + ] + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "PAIR" + }, + { + "prim": "MEM" + }, + { + "prim": "IF", + "args": [ + [ + { + "prim": "SWAP" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "DUP" + }, + { + "prim": "DIG", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "DUP" + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "7" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "PAIR" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "GET" + }, + { + "prim": "IF_NONE", + "args": [ + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "int" + }, + { + "int": "535" + } + ] + }, + { + "prim": "FAILWITH" + } + ], + [] + ] + }, + { + "prim": "DUP", + "args": [ + { + "int": "7" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "CDR" + }, + { + "prim": "ADD" + }, + { + "prim": "SOME" + }, + { + "prim": "SWAP" + }, + { + "prim": "UPDATE" + }, + { + "prim": "PAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "PAIR" + }, + { + "prim": "PAIR" + }, + { + "prim": "SWAP" + } + ], + [ + { + "prim": "SWAP" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "DUP", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "CDR" + }, + { + "prim": "SOME" + }, + { + "prim": "DIG", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "DUP" + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "7" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "PAIR" + }, + { + "prim": "UPDATE" + }, + { + "prim": "PAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "PAIR" + }, + { + "prim": "PAIR" + }, + { + "prim": "SWAP" + } + ] + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "CDR" + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "COMPARE" + }, + { + "prim": "LT" + }, + { + "prim": "IF", + "args": [ + [], + [ + { + "prim": "DUP" + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "DUP", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "CDR" + }, + { + "prim": "COMPARE" + }, + { + "prim": "EQ" + }, + { + "prim": "IF", + "args": [ + [], + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "string" + }, + { + "string": "Token-IDs should be consecutive" + } + ] + }, + { + "prim": "FAILWITH" + } + ] + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "CAR" + }, + { + "prim": "PUSH", + "args": [ + { + "prim": "nat" + }, + { + "int": "1" + } + ] + }, + { + "prim": "DUP", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "ADD" + }, + { + "prim": "SWAP" + }, + { + "prim": "PAIR" + }, + { + "prim": "PAIR" + }, + { + "prim": "PAIR" + }, + { + "prim": "DUP" + }, + { + "prim": "GET", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "DIG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "DUP" + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "PAIR" + }, + { + "prim": "SOME" + }, + { + "prim": "DUP", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "UPDATE" + }, + { + "prim": "UPDATE", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "SWAP" + } + ] + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "DUP" + }, + { + "prim": "GET", + "args": [ + { + "int": "6" + } + ] + }, + { + "prim": "DIG", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "6" + } + ] + }, + { + "prim": "DUP", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "GET" + }, + { + "prim": "IF_NONE", + "args": [ + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "nat" + }, + { + "int": "0" + } + ] + } + ], + [] + ] + }, + { + "prim": "DUP", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "CDR" + }, + { + "prim": "ADD" + }, + { + "prim": "SOME" + }, + { + "prim": "DIG", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "UPDATE" + }, + { + "prim": "UPDATE", + "args": [ + { + "int": "6" + } + ] + } + ], + [ + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "SENDER" + }, + { + "prim": "COMPARE" + }, + { + "prim": "EQ" + }, + { + "prim": "IF", + "args": [ + [], + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "string" + }, + { + "string": "FA2_NOT_ADMIN" + } + ] + }, + { + "prim": "FAILWITH" + } + ] + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "CDR" + }, + { + "prim": "DIG", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "PAIR" + }, + { + "prim": "PAIR" + }, + { + "prim": "PAIR" + } + ] + ] + }, + { + "prim": "NIL", + "args": [ + { + "prim": "operation" + } + ] + } + ] + ] + } + ], + [ + { + "prim": "IF_LEFT", + "args": [ + [ + { + "prim": "IF_LEFT", + "args": [ + [ + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "SENDER" + }, + { + "prim": "COMPARE" + }, + { + "prim": "EQ" + }, + { + "prim": "IF", + "args": [ + [], + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "string" + }, + { + "string": "FA2_NOT_ADMIN" + } + ] + }, + { + "prim": "FAILWITH" + } + ] + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "CDR" + }, + { + "prim": "SOME" + }, + { + "prim": "DIG", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "UPDATE" + }, + { + "prim": "SWAP" + }, + { + "prim": "PAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "PAIR" + }, + { + "prim": "PAIR" + } + ], + [ + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "SENDER" + }, + { + "prim": "COMPARE" + }, + { + "prim": "EQ" + }, + { + "prim": "IF", + "args": [ + [], + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "string" + }, + { + "string": "FA2_NOT_ADMIN" + } + ] + }, + { + "prim": "FAILWITH" + } + ] + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "CAR" + }, + { + "prim": "DIG", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "PAIR" + }, + { + "prim": "PAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "PAIR" + } + ] + ] + } + ], + [ + { + "prim": "IF_LEFT", + "args": [ + [ + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "CDR" + }, + { + "prim": "IF", + "args": [ + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "string" + }, + { + "string": "FA2_PAUSED" + } + ] + }, + { + "prim": "FAILWITH" + } + ], + [] + ] + }, + { + "prim": "DUP" + }, + { + "prim": "ITER", + "args": [ + [ + { + "prim": "DUP" + }, + { + "prim": "CDR" + }, + { + "prim": "ITER", + "args": [ + [ + { + "prim": "DUP", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "SENDER" + }, + { + "prim": "COMPARE" + }, + { + "prim": "EQ" + }, + { + "prim": "IF", + "args": [ + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "bool" + }, + { + "prim": "True" + } + ] + } + ], + [ + { + "prim": "SENDER" + }, + { + "prim": "DUP", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "COMPARE" + }, + { + "prim": "EQ" + } + ] + ] + }, + { + "prim": "IF", + "args": [ + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "bool" + }, + { + "prim": "True" + } + ] + } + ], + [ + { + "prim": "DUP", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "SENDER" + }, + { + "prim": "DUP", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "PAIR", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "MEM" + } + ] + ] + }, + { + "prim": "IF", + "args": [ + [], + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "string" + }, + { + "string": "FA2_NOT_OPERATOR" + } + ] + }, + { + "prim": "FAILWITH" + } + ] + ] + }, + { + "prim": "DUP", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "MEM" + }, + { + "prim": "IF", + "args": [ + [], + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "string" + }, + { + "string": "FA2_TOKEN_UNDEFINED" + } + ] + }, + { + "prim": "FAILWITH" + } + ] + ] + }, + { + "prim": "DUP" + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "PUSH", + "args": [ + { + "prim": "nat" + }, + { + "int": "0" + } + ] + }, + { + "prim": "COMPARE" + }, + { + "prim": "LT" + }, + { + "prim": "IF", + "args": [ + [ + { + "prim": "DUP" + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "DUP", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "DUP", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "DUP", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "PAIR" + }, + { + "prim": "GET" + }, + { + "prim": "IF_NONE", + "args": [ + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "int" + }, + { + "int": "404" + } + ] + }, + { + "prim": "FAILWITH" + } + ], + [] + ] + }, + { + "prim": "COMPARE" + }, + { + "prim": "GE" + }, + { + "prim": "IF", + "args": [ + [], + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "string" + }, + { + "string": "FA2_INSUFFICIENT_BALANCE" + } + ] + }, + { + "prim": "FAILWITH" + } + ] + ] + }, + { + "prim": "DUP", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "UNPAIR" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "DUP" + }, + { + "prim": "DUP", + "args": [ + { + "int": "6" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "DUP", + "args": [ + { + "int": "8" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "PAIR" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "GET" + }, + { + "prim": "IF_NONE", + "args": [ + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "int" + }, + { + "int": "407" + } + ] + }, + { + "prim": "FAILWITH" + } + ], + [ + { + "prim": "DROP" + } + ] + ] + }, + { + "prim": "DUP", + "args": [ + { + "int": "6" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "DIG", + "args": [ + { + "int": "9" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "DUP", + "args": [ + { + "int": "8" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "DUP", + "args": [ + { + "int": "10" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "PAIR" + }, + { + "prim": "GET" + }, + { + "prim": "IF_NONE", + "args": [ + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "int" + }, + { + "int": "408" + } + ] + }, + { + "prim": "FAILWITH" + } + ], + [] + ] + }, + { + "prim": "SUB" + }, + { + "prim": "ISNAT" + }, + { + "prim": "IF_NONE", + "args": [ + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "int" + }, + { + "int": "407" + } + ] + }, + { + "prim": "FAILWITH" + } + ], + [] + ] + }, + { + "prim": "SOME" + }, + { + "prim": "SWAP" + }, + { + "prim": "UPDATE" + }, + { + "prim": "PAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "PAIR" + }, + { + "prim": "PAIR" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "PAIR" + }, + { + "prim": "MEM" + }, + { + "prim": "IF", + "args": [ + [ + { + "prim": "DIG", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "UNPAIR" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "DUP" + }, + { + "prim": "DIG", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "DUP" + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "7" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "PAIR" + }, + { + "prim": "DUP" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "GET" + }, + { + "prim": "IF_NONE", + "args": [ + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "int" + }, + { + "int": "410" + } + ] + }, + { + "prim": "FAILWITH" + } + ], + [] + ] + }, + { + "prim": "DIG", + "args": [ + { + "int": "6" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "ADD" + }, + { + "prim": "SOME" + }, + { + "prim": "SWAP" + }, + { + "prim": "UPDATE" + }, + { + "prim": "PAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "PAIR" + }, + { + "prim": "PAIR" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + } + ], + [ + { + "prim": "DIG", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "UNPAIR" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "DUP", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "SOME" + }, + { + "prim": "DIG", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "DUP" + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "CAR" + }, + { + "prim": "PAIR" + }, + { + "prim": "UPDATE" + }, + { + "prim": "PAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "PAIR" + }, + { + "prim": "PAIR" + }, + { + "prim": "DUG", + "args": [ + { + "int": "2" + } + ] + } + ] + ] + } + ], + [ + { + "prim": "DROP" + } + ] + ] + } + ] + ] + }, + { + "prim": "DROP" + } + ] + ] + }, + { + "prim": "DROP" + } + ], + [ + { + "prim": "DUP" + }, + { + "prim": "ITER", + "args": [ + [ + { + "prim": "IF_LEFT", + "args": [ + [ + { + "prim": "DUP" + }, + { + "prim": "CAR" + }, + { + "prim": "SENDER" + }, + { + "prim": "COMPARE" + }, + { + "prim": "EQ" + }, + { + "prim": "IF", + "args": [ + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "bool" + }, + { + "prim": "True" + } + ] + } + ], + [ + { + "prim": "DUP", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "SENDER" + }, + { + "prim": "COMPARE" + }, + { + "prim": "EQ" + } + ] + ] + }, + { + "prim": "IF", + "args": [ + [], + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "string" + }, + { + "string": "FA2_NOT_ADMIN_OR_OPERATOR" + } + ] + }, + { + "prim": "FAILWITH" + } + ] + ] + }, + { + "prim": "DIG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "UNPAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "PUSH", + "args": [ + { + "prim": "option", + "args": [ + { + "prim": "unit" + } + ] + }, + { + "prim": "Some", + "args": [ + { + "prim": "Unit" + } + ] + } + ] + }, + { + "prim": "DIG", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "DUP" + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "CAR" + }, + { + "prim": "PAIR", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "UPDATE" + }, + { + "prim": "PAIR" + }, + { + "prim": "PAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "PAIR" + }, + { + "prim": "SWAP" + } + ], + [ + { + "prim": "DUP" + }, + { + "prim": "CAR" + }, + { + "prim": "SENDER" + }, + { + "prim": "COMPARE" + }, + { + "prim": "EQ" + }, + { + "prim": "IF", + "args": [ + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "bool" + }, + { + "prim": "True" + } + ] + } + ], + [ + { + "prim": "DUP", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "CAR" + }, + { + "prim": "SENDER" + }, + { + "prim": "COMPARE" + }, + { + "prim": "EQ" + } + ] + ] + }, + { + "prim": "IF", + "args": [ + [], + [ + { + "prim": "PUSH", + "args": [ + { + "prim": "string" + }, + { + "string": "FA2_NOT_ADMIN_OR_OPERATOR" + } + ] + }, + { + "prim": "FAILWITH" + } + ] + ] + }, + { + "prim": "DIG", + "args": [ + { + "int": "2" + } + ] + }, + { + "prim": "UNPAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "UNPAIR" + }, + { + "prim": "NONE", + "args": [ + { + "prim": "unit" + } + ] + }, + { + "prim": "DIG", + "args": [ + { + "int": "5" + } + ] + }, + { + "prim": "DUP" + }, + { + "prim": "GET", + "args": [ + { + "int": "4" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "DUP" + }, + { + "prim": "GET", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "SWAP" + }, + { + "prim": "CAR" + }, + { + "prim": "PAIR", + "args": [ + { + "int": "3" + } + ] + }, + { + "prim": "UPDATE" + }, + { + "prim": "PAIR" + }, + { + "prim": "PAIR" + }, + { + "prim": "SWAP" + }, + { + "prim": "PAIR" + }, + { + "prim": "SWAP" + } + ] + ] + } + ] + ] + }, + { + "prim": "DROP" + } + ] + ] + } + ] + ] + }, + { + "prim": "NIL", + "args": [ + { + "prim": "operation" + } + ] + } + ] + ] + }, + { + "prim": "PAIR" + } + ] + ] + } + ], + "storage": { + "prim": "Pair", + "args": [ + { + "prim": "Pair", + "args": [ + { + "prim": "Pair", + "args": [ + { + "string": "KT1Jvxy7E1mBDpS34CJaTVGWosFiuimShMXn" + }, + { + "int": "0" + } + ] + }, + { + "prim": "Pair", + "args": [ + [], + [] + ] + } + ] + }, + { + "prim": "Pair", + "args": [ + { + "prim": "Pair", + "args": [ + [], + { + "prim": "False" + } + ] + }, + { + "prim": "Pair", + "args": [ + [], + [] + ] + } + ] + } + ] + } +} \ No newline at end of file diff --git a/Beacon.Sdk.Sample.Dapp/Sample.cs b/Beacon.Sdk.Sample.Dapp/Sample.cs index f5e744d..f792faf 100644 --- a/Beacon.Sdk.Sample.Dapp/Sample.cs +++ b/Beacon.Sdk.Sample.Dapp/Sample.cs @@ -1,5 +1,6 @@ namespace Beacon.Sdk.Sample.Dapp; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using Beacon; using Beacon.Error; @@ -8,8 +9,12 @@ namespace Beacon.Sdk.Sample.Dapp; using Beacon.Sign; using BeaconClients; using BeaconClients.Abstract; +using Core.Domain.Services; using Microsoft.Extensions.Logging; +using Netezos.Encoding; +using Netezos.Forging.Models; using Netezos.Keys; +using Newtonsoft.Json.Linq; using Serilog; using Serilog.Extensions.Logging; using Hex = Netezos.Encoding.Hex; @@ -107,6 +112,36 @@ public async Task Run() BeaconDappClient.RemoveActiveAccounts(); break; } + + case "origination": + { + var currentDir = GetThisFileDir(); + + var jsonScript = JObject + .Parse(File.ReadAllText($@"{currentDir}/FA2TokenContract.json")); + + var operationDetails = new List(); + var partialTezosTransactionOperation = new PartialTezosOriginationOperation( + Balance:"0", + Script: jsonScript, + Delegate: null + ); + + operationDetails.Add(partialTezosTransactionOperation); + + var operationRequest = new OperationRequest( + type: BeaconMessageType.operation_request, + version: Constants.BeaconVersion, + id: KeyPairService.CreateGuid(), + senderId: BeaconDappClient.SenderId, + network: activeAccountPermissions.Network, + operationDetails: operationDetails, + sourceAddress: pubKey.Address); + + Log.Debug("requesting operation: " + operationRequest); + await BeaconDappClient.SendResponseAsync(activeAccountPermissions.SenderId, operationRequest); + break; + } } } } @@ -123,9 +158,9 @@ private async void OnBeaconDappClientMessageReceived(object? sender, BeaconMessa { var network = new Network { - Type = NetworkType.mainnet, - Name = "mainnet", - RpcUrl = "https://rpc.tzkt.io/mainnet" + Type = NetworkType.ghostnet, + Name = "ghostnet", + RpcUrl = "https://rpc.tzkt.io/ghostnet" }; var permissionScopes = new List @@ -201,4 +236,9 @@ private async void OnBeaconDappClientMessageReceived(object? sender, BeaconMessa } } } + + private static string GetThisFileDir([CallerFilePath] string path = null) + { + return Path.GetDirectoryName(path); + } } \ No newline at end of file diff --git a/Beacon.Sdk/Beacon.Sdk.csproj b/Beacon.Sdk/Beacon.Sdk.csproj index 80df072..0f42b7b 100644 --- a/Beacon.Sdk/Beacon.Sdk.csproj +++ b/Beacon.Sdk/Beacon.Sdk.csproj @@ -14,7 +14,7 @@ Mikhail Tatarenko Beacon.Sdk Beacon .NET SDK for Tezos wallet / dApps developers. - 1.0.26 + 1.0.27 Copyright © Baking Bad 2019-2023 enable netstandard2.1 diff --git a/Beacon.Sdk/Beacon/Operation/TezosOriginationOperation.cs b/Beacon.Sdk/Beacon/Operation/TezosOriginationOperation.cs index 591d242..d70d5be 100644 --- a/Beacon.Sdk/Beacon/Operation/TezosOriginationOperation.cs +++ b/Beacon.Sdk/Beacon/Operation/TezosOriginationOperation.cs @@ -2,9 +2,11 @@ namespace Beacon.Sdk.Beacon.Operation { + using Newtonsoft.Json.Linq; + public record PartialTezosOriginationOperation( string Balance, - Script Script, + JObject Script, string? Delegate) : TezosBaseOperation(TezosOperationType.origination), IPartialTezosOperation; }