Compare commits
15 Commits
dev/signat
...
master
Author | SHA1 | Date |
---|---|---|
Aleksandr Bautin | d8a29eebe0 | 1 year ago |
Lev | a580e05856 | 2 years ago |
Lev | ea5f78348d | 2 years ago |
Lev | 368825aa1e | 2 years ago |
Lev | 443321588e | 2 years ago |
Lev | dbad552830 | 2 years ago |
Lev | f6f423117b | 2 years ago |
Lev | d9746dedf5 | 2 years ago |
Lev | 00f5549985 | 2 years ago |
Lev | 8a565970ee | 2 years ago |
Lev | e3291e9be5 | 2 years ago |
Lev | a028b5c7d3 | 2 years ago |
Lev | 27d0af1929 | 2 years ago |
Lev | 87067210b4 | 2 years ago |
Lev | b35dbb9283 | 2 years ago |
30 changed files with 8018 additions and 512 deletions
@ -0,0 +1,19 @@
|
||||
FROM node:latest |
||||
|
||||
# Create app directory |
||||
WORKDIR /usr/src/app |
||||
|
||||
# Install app dependencies |
||||
# A wildcard is used to ensure both package.json AND package-lock.json are copied |
||||
# where available (npm@5+) |
||||
COPY package*.json ./ |
||||
|
||||
RUN npm install |
||||
# If you are building your code for production |
||||
RUN npm ci --only=production |
||||
|
||||
# Bundle app source |
||||
COPY . . |
||||
|
||||
EXPOSE 5171 |
||||
CMD [ "npm", "run", "api" ] |
@ -0,0 +1,91 @@
|
||||
const main = require("../contracts/main"); |
||||
const { Address, Cell, Slice } = require("ton"); |
||||
const { Base64 } = require("@tonconnect/protocol"); |
||||
require("dotenv").config(); |
||||
const express = require("express"); |
||||
const { get_tonclient, AdnlAddress } = require("../contracts/utils"); |
||||
const { getRecords } = require("../contracts/main"); |
||||
const { sha256 } = require("ton-crypto"); |
||||
const { BN } = require("bn.js"); |
||||
const app = express(); |
||||
const port = 5171; |
||||
const debug = process.env.DEBUG === "1"; |
||||
let tonclient = get_tonclient(debug); |
||||
|
||||
app.use(function (err, req, res, next) { |
||||
if (!err) return next(); // you also need this line
|
||||
console.log("error"); |
||||
res.send("error"); |
||||
}); |
||||
app.get("/", async (req, res) => { |
||||
res.send("Agorata microservice for dealing with TON"); |
||||
}); |
||||
|
||||
app.get("/buy-message/:collection/:domain" /* the rest as get parameters: buyer, key */, (req, res) => { |
||||
try { |
||||
let collection = Address.parse(req.params.collection); |
||||
if (req.query.buyer !== "") { |
||||
let buyer = Address.parse(req.query.buyer); |
||||
let key = Buffer.from(req.query.key, "hex"); |
||||
let signature = main.signBuy(req.params.domain, collection, buyer, key); |
||||
let msg = main.createItem({ domain: req.params.domain, signature }); |
||||
res.send(JSON.stringify([Base64.encode(msg.toBoc()), collection.toString()])); |
||||
} else { |
||||
let msg = main.createItem({ domain: req.params.domain, signature: "0" }); |
||||
res.send(JSON.stringify([Base64.encode(msg.toBoc()), collection.toString()])); |
||||
} |
||||
} catch (e) { |
||||
console.error("buy-message", e); |
||||
} |
||||
}); |
||||
|
||||
app.get("/content-message/:address/:zone/:domain", async (req, res) => { |
||||
try { |
||||
let msg = await main.setContent({ domain: req.params.domain, zone: req.params.zone }); |
||||
let addr = main.getItemAddr(Address.parse(req.params.address), req.params.domain, 0); |
||||
res.send(JSON.stringify([Base64.encode(msg.toBoc()), addr.toString()])); |
||||
} catch (e) { |
||||
console.error("content-message"); |
||||
} |
||||
}); |
||||
|
||||
app.get("/address/:collection/:domain", (req, res) => { |
||||
let addr = main.getItemAddr(Address.parse(req.params.collection), req.params.domain, 0); |
||||
res.send(JSON.stringify({ address: addr.toString() })); |
||||
}); |
||||
|
||||
app.get("/get-records/:address", async (req, res) => { |
||||
try { |
||||
let records = await getRecords(tonclient, Address.parse(req.params.address)); |
||||
// console.log(records)
|
||||
res.send(JSON.stringify(records)); |
||||
} catch (e) { |
||||
console.log(e); |
||||
res.send(JSON.stringify({})); |
||||
} |
||||
}); |
||||
|
||||
app.get("/get-price/:address/:subdomain", async (req, res) => { |
||||
let price = await main.getPrice(tonclient, Address.parse(req.params.address), req.params.subdomain); |
||||
res.send(JSON.stringify(price)); |
||||
}); |
||||
|
||||
app.get("/set-record/site/:site", async (req, res) => { |
||||
let site = new AdnlAddress(req.params.site); |
||||
let msg = await main.changeRecordMsg("site", await main.AdnlRecord(site)); |
||||
res.send(JSON.stringify(Base64.encode(msg.toBoc()))); |
||||
}); |
||||
|
||||
app.get("/hash/:key", async (req, res) => { |
||||
res.send(new BN(await sha256(req.params.key)).toString()); |
||||
}); |
||||
|
||||
app.get("/set-record/wallet/:wallet", async (req, res) => { |
||||
let wallet = Address.parse(req.params.wallet); |
||||
let msg = await main.changeRecordMsg("wallet", await main.WalletRecord(wallet)); |
||||
res.send(JSON.stringify(Base64.encode(msg.toBoc()))); |
||||
}); |
||||
|
||||
app.listen(port, () => { |
||||
console.log(`Example app listening on port ${port}`); |
||||
}); |
@ -0,0 +1,99 @@
|
||||
const main = require('../contracts/main'); |
||||
const subcommand = require('subcommand'); |
||||
const {Address} = require("ton"); |
||||
const {keyPairFromSeed, getSecureRandomBytes, keyPairFromSecretKey} = require("ton-crypto"); |
||||
const {Base64} = require('@tonconnect/protocol'); |
||||
const BN = require("bn.js"); |
||||
|
||||
|
||||
const argv = process.argv.slice(2); |
||||
let commands = [ |
||||
{ |
||||
name: 'buy-message', |
||||
options: [ // cliclopts options
|
||||
// {
|
||||
// name: 'loud',
|
||||
// boolean: true,
|
||||
// default: false,
|
||||
// abbr: 'v',
|
||||
// help: 'print out all output loudly'
|
||||
// }
|
||||
{ |
||||
name: 'domain' |
||||
}, |
||||
{ |
||||
name: 'collection' |
||||
}, |
||||
{ |
||||
name: 'buyer', |
||||
help: 'Buyer\'s address' |
||||
}, |
||||
{ |
||||
name: 'key', |
||||
help: 'Secret key, hex-encoded' |
||||
} |
||||
], |
||||
command: function message(args) { |
||||
let collection = Address.parse(args._[1]); |
||||
if (args._[2] !== '') { |
||||
let buyer = Address.parse(args._[2]); |
||||
let key = Buffer.from(args._[3], 'hex'); |
||||
let signature = main.signBuy(args._[0], collection, buyer, key); |
||||
let msg = main.createItem({domain: args._[0], signature}) |
||||
console.log(Base64.encode(msg.toBoc()) + ' ' + collection.toString()); |
||||
} else { |
||||
let msg = main.createItem({domain: args._[0], signature: '0'}) |
||||
console.log(Base64.encode(msg.toBoc()) + ' ' + collection.toString()); |
||||
} |
||||
} |
||||
}, |
||||
{ |
||||
name: 'keygen', |
||||
command: async function keygen(args) { |
||||
let keypair = keyPairFromSeed(await getSecureRandomBytes(32)); |
||||
console.log(keypair.secretKey.toString('hex')); |
||||
} |
||||
}, |
||||
{ |
||||
name: 'getpub', // get public key as BN from b64 secret key
|
||||
options: [ |
||||
{ |
||||
name: 'key', |
||||
help: 'Secret key, hex-encoded' |
||||
} |
||||
], |
||||
command: function getpub(args) { |
||||
let keypair = keyPairFromSecretKey(Buffer.from(args._[0], 'base64')); |
||||
console.log(new BN(keypair.publicKey)) |
||||
} |
||||
}, |
||||
{ |
||||
name: 'content-message', |
||||
options: [ |
||||
{ |
||||
name: 'domain', |
||||
help: 'domain name to set content for (test for test.example.ton)' |
||||
}, |
||||
{ |
||||
name: 'zone', |
||||
help: 'zone name to set content for (example.ton for test.example.ton)' |
||||
}, |
||||
{ |
||||
name: 'address', |
||||
help: 'address of the collection contract' |
||||
}, |
||||
{ |
||||
name: 'workchain', |
||||
help: '0 for mainnet, 1 for testnet' |
||||
} |
||||
], |
||||
command: function set_content(args) { |
||||
let msg = main.setContent({domain: args._[0], zone: args._[1]}); |
||||
let addr = main.getItemAddr(Address.parse(args._[2]), args._[0], args._[3] === '1' ? -1 : 0); |
||||
console.log(Base64.encode(msg.toBoc()) + ' ' + addr.toString()); |
||||
} |
||||
} |
||||
] |
||||
|
||||
let match = subcommand(commands); |
||||
let opts = match(argv); |
@ -0,0 +1,975 @@
|
||||
"Asm.fif" include |
||||
"Asm.fif" include |
||||
// automatically generated from `contracts/dns-auto-code.fc` incl:`contracts/imports/stdlib.fc` |
||||
PROGRAM{ |
||||
DECLPROC load_data |
||||
DECLPROC load_prices |
||||
DECLPROC store_data |
||||
DECLPROC send_message |
||||
DECLPROC send_error |
||||
DECLPROC send_ok |
||||
DECLPROC housekeeping |
||||
DECLPROC calcprice_internal |
||||
DECLPROC check_owner |
||||
DECLPROC perform_ctl_op |
||||
DECLPROC recv_internal |
||||
DECLPROC recv_external |
||||
DECLPROC dnsdictlookup |
||||
123660 DECLMETHOD dnsresolve |
||||
87450 DECLMETHOD getexpirationx |
||||
110574 DECLMETHOD getexpiration |
||||
67418 DECLMETHOD getstdperiod |
||||
109522 DECLMETHOD getppr |
||||
108994 DECLMETHOD getppc |
||||
113123 DECLMETHOD getppb |
||||
113304 DECLMETHOD calcprice |
||||
85700 DECLMETHOD calcregprice |
||||
DECLGLOBVAR query_info |
||||
load_data PROCREF:<{ |
||||
// |
||||
c4 PUSH // _1 |
||||
CTOS // cs |
||||
LDREF // _3 cs |
||||
LDDICT // _3 _5 cs |
||||
LDDICT // _3 _5 _7 cs |
||||
30 LDU // _3 _5 _7 _10 cs |
||||
LDGRAMS // _3 _5 _7 _10 _13 cs |
||||
LDGRAMS // _3 _5 _7 _10 _13 _15 cs |
||||
LDGRAMS // _3 _5 _7 _10 _13 _15 _17 cs |
||||
4 -ROLL // _3 _5 _7 cs _10 _13 _15 _17 |
||||
4 TUPLE // _3 _5 _7 cs _9 |
||||
SWAP // _3 _5 _7 _9 cs |
||||
32 LDU // _3 _5 _7 _9 _19 cs |
||||
32 LDU // _3 _5 _7 _9 _19 _42 _41 |
||||
DROP // _3 _5 _7 _9 _19 _22 |
||||
}> |
||||
load_prices PROCREF:<{ |
||||
// |
||||
c4 PUSH // _1 |
||||
CTOS // cs |
||||
LDREF // _19 _18 |
||||
NIP // cs |
||||
LDDICT // _21 _20 |
||||
NIP // cs |
||||
LDDICT // _23 _22 |
||||
NIP // cs |
||||
30 LDU // _9 cs |
||||
LDGRAMS // _9 _12 cs |
||||
LDGRAMS // _9 _12 _14 cs |
||||
LDGRAMS // _9 _12 _14 _31 _30 |
||||
DROP // _9 _12 _14 _16 |
||||
}> |
||||
store_data PROC:<{ |
||||
// ctl dd gc prices nhk lhk |
||||
s0 s2 XCHG // ctl dd gc lhk nhk prices |
||||
4 UNTUPLE // ctl dd gc lhk nhk sp ppr ppc ppb |
||||
s0 s8 XCHG |
||||
NEWC // ppb dd gc lhk nhk sp ppr ppc ctl _11 |
||||
STREF // ppb dd gc lhk nhk sp ppr ppc _12 |
||||
s1 s7 XCHG // ppb ppc gc lhk nhk sp ppr dd _12 |
||||
STDICT // ppb ppc gc lhk nhk sp ppr _13 |
||||
s1 s5 XCHG // ppb ppc ppr lhk nhk sp gc _13 |
||||
STDICT // ppb ppc ppr lhk nhk sp _14 |
||||
30 STU // ppb ppc ppr lhk nhk _16 |
||||
s0 s3 XCHG2 // ppb ppc nhk lhk _16 ppr |
||||
STGRAMS // ppb ppc nhk lhk _17 |
||||
s0 s3 XCHG2 // ppb lhk nhk _17 ppc |
||||
STGRAMS // ppb lhk nhk _18 |
||||
s0 s3 XCHG2 // nhk lhk _18 ppb |
||||
STGRAMS // nhk lhk _19 |
||||
s1 s2 XCHG // lhk nhk _19 |
||||
32 STU // lhk _21 |
||||
32 STU // _23 |
||||
ENDC // _24 |
||||
c4 POP |
||||
}> |
||||
send_message PROC:<{ |
||||
// addr tag query_id body grams mode |
||||
0 PUSHINT // addr tag query_id body grams mode _7=0 |
||||
24 PUSHINT // addr tag query_id body grams mode _7=0 _8=24 |
||||
NEWC // addr tag query_id body grams mode _7=0 _8=24 _9 |
||||
6 STU // addr tag query_id body grams mode _7=0 _11 |
||||
s0 s7 XCHG2 // _7=0 tag query_id body grams mode _11 addr |
||||
STSLICER // _7=0 tag query_id body grams mode _12 |
||||
ROT // _7=0 tag query_id body mode _12 grams |
||||
STGRAMS // _7=0 tag query_id body mode _13 |
||||
s1 s5 XCHG // mode tag query_id body _7=0 _13 |
||||
107 STU // mode tag query_id body _27 |
||||
s1 s3 XCHG // mode body query_id tag _27 |
||||
32 STU // mode body query_id _29 |
||||
64 STU // mode body msg |
||||
OVER // mode body msg body |
||||
-1 GTINT // mode body msg _33 |
||||
IF:<{ // mode body msg |
||||
32 STU // mode msg |
||||
}>ELSE<{ |
||||
NIP // mode msg |
||||
}> |
||||
ENDC // mode _37 |
||||
SWAP // _37 mode |
||||
SENDRAWMSG |
||||
}> |
||||
send_error PROC:<{ |
||||
// error_code |
||||
query_info GETGLOB |
||||
UNTRIPLE // error_code addr query_id op |
||||
s2 s3 XCHG |
||||
0 PUSHINT |
||||
64 PUSHINT // addr error_code query_id op _5=0 _6=64 |
||||
send_message CALLDICT |
||||
}> |
||||
send_ok PROC:<{ |
||||
// price |
||||
4 PUSHINT // price _1=4 |
||||
RAWRESERVE |
||||
query_info GETGLOB |
||||
UNTRIPLE // addr query_id op |
||||
4016791929 PUSHINT // addr query_id op _7=4016791929 |
||||
-ROT |
||||
0 PUSHINT |
||||
7 PUSHPOW2 // addr _7=4016791929 query_id op _8=0 _9=128 |
||||
send_message CALLDICT |
||||
}> |
||||
housekeeping PROC:<{ |
||||
// ctl dd gc prices nhk lhk max_steps |
||||
NOW // ctl dd gc prices nhk lhk max_steps n |
||||
s2 PUSH // ctl dd gc prices nhk lhk max_steps n lhk |
||||
60 ADDCONST // ctl dd gc prices nhk lhk max_steps n _10 |
||||
s4 s(-1) PUXC // ctl dd gc prices nhk lhk max_steps n nhk _10 |
||||
MAX // ctl dd gc prices nhk lhk max_steps n _11 |
||||
s1 s(-1) PUXC // ctl dd gc prices nhk lhk max_steps n n _11 |
||||
LESS // ctl dd gc prices nhk lhk max_steps n _12 |
||||
IFJMP:<{ // ctl dd gc prices nhk lhk max_steps n |
||||
2DROP // ctl dd gc prices nhk lhk |
||||
store_data CALLDICT |
||||
}> // ctl dd gc prices nhk lhk max_steps n |
||||
s2 POP // ctl dd gc prices nhk n max_steps |
||||
s4 PUSH |
||||
8 PUSHPOW2 // ctl dd gc prices nhk n max_steps gc _17=256 |
||||
DICTUMIN |
||||
NULLSWAPIFNOT2 // ctl dd gc prices nhk n max_steps _63 _62 _64 |
||||
s2 POP // ctl dd gc prices nhk n max_steps found? mkey |
||||
WHILE:<{ |
||||
s1 s2 XCPU // ctl dd gc prices nhk n max_steps mkey found? max_steps |
||||
AND // ctl dd gc prices nhk n max_steps mkey _19 |
||||
}>DO<{ // ctl dd gc prices nhk n max_steps mkey |
||||
s3 POP // ctl dd gc prices mkey n max_steps |
||||
s2 PUSH // ctl dd gc prices mkey n max_steps mkey |
||||
224 RSHIFT# // ctl dd gc prices mkey n max_steps nhk |
||||
s0 s2 PUSH2 // ctl dd gc prices mkey n max_steps nhk nhk n |
||||
LESS // ctl dd gc prices mkey n max_steps nhk _24 |
||||
IF:<{ // ctl dd gc prices mkey n max_steps nhk |
||||
DROP // ctl dd gc prices mkey n max_steps |
||||
s2 PUSH // ctl dd gc prices mkey n max_steps mkey |
||||
224 MODPOW2# // ctl dd gc prices mkey n max_steps key |
||||
s0 s6 PUSH2 |
||||
224 PUSHINT // ctl dd gc prices mkey n max_steps key key dd _35 |
||||
DICTUGET |
||||
NULLSWAPIFNOT // ctl dd gc prices mkey n max_steps key val found? |
||||
IF:<{ // ctl dd gc prices mkey n max_steps key val |
||||
32 PLDU // ctl dd gc prices mkey n max_steps key exp |
||||
s3 PUSH // ctl dd gc prices mkey n max_steps key exp n |
||||
LEQ // ctl dd gc prices mkey n max_steps key _40 |
||||
IF:<{ // ctl dd gc prices mkey n max_steps key |
||||
s0 s6 XCHG2 |
||||
224 PUSHINT // ctl max_steps gc prices mkey n key dd _44 |
||||
DICTUDEL // ctl max_steps gc prices mkey n _67 _68 |
||||
DROP // ctl max_steps gc prices mkey n dd |
||||
s0 s5 XCHG // ctl dd gc prices mkey n max_steps |
||||
}>ELSE<{ |
||||
DROP // ctl dd gc prices mkey n max_steps |
||||
}> |
||||
}>ELSE<{ |
||||
2DROP // ctl dd gc prices mkey n max_steps |
||||
}> |
||||
s2 s4 XCHG2 |
||||
8 PUSHPOW2 // ctl dd max_steps prices n mkey gc _47=256 |
||||
DICTUDEL // ctl dd max_steps prices n _69 _70 |
||||
DROP // ctl dd max_steps prices n gc |
||||
DUP |
||||
8 PUSHPOW2 // ctl dd max_steps prices n gc gc _50=256 |
||||
DICTUMIN |
||||
NULLSWAPIFNOT2 // ctl dd max_steps prices n gc _72 _71 _73 |
||||
s2 POP // ctl dd max_steps prices n gc found? mkey |
||||
OVER // ctl dd max_steps prices n gc found? mkey found? |
||||
IF:<{ // ctl dd max_steps prices n gc found? mkey |
||||
DUP // ctl dd max_steps prices n gc found? mkey mkey |
||||
224 RSHIFT# // ctl dd max_steps prices n gc found? mkey _52 |
||||
}>ELSE<{ // ctl dd max_steps prices n gc found? mkey |
||||
32 PUSHPOW2DEC // ctl dd max_steps prices n gc found? mkey _52=4294967295 |
||||
}> // ctl dd max_steps prices n gc found? mkey nhk |
||||
s0 s6 XCHG // ctl dd nhk prices n gc found? mkey max_steps |
||||
DEC // ctl dd nhk prices n gc found? mkey max_steps |
||||
}>ELSE<{ // ctl dd gc prices mkey n max_steps nhk |
||||
s5 s1 s5 XCHG3 |
||||
s0 s3 XCHG |
||||
FALSE |
||||
s0 s2 XCHG // ctl dd nhk prices n gc found? mkey max_steps |
||||
}> |
||||
s3 s6 XCHG |
||||
s3 s4 XCHG |
||||
-ROT // ctl dd gc prices nhk n max_steps found? mkey |
||||
}> // ctl dd gc prices nhk n max_steps mkey |
||||
2DROP // ctl dd gc prices nhk n |
||||
store_data CALLDICT |
||||
}> |
||||
calcprice_internal PROCREF:<{ |
||||
// domain data ppc ppb |
||||
s0 s2 XCHG |
||||
100 PUSHINT // domain ppb ppc data _7=100 |
||||
CDATASIZE // domain ppb ppc _24 _25 _26 |
||||
s2 POP // domain ppb ppc refs bits |
||||
s0 s4 XCHG // bits ppb ppc refs domain |
||||
SBITS // bits ppb ppc refs _9 |
||||
1 LSHIFT# // bits ppb ppc refs _11 |
||||
192 PUSHINT // bits ppb ppc refs _11 _16 |
||||
ADD // bits ppb ppc refs _17 |
||||
s1 s4 XCHG // refs ppb ppc bits _17 |
||||
ADD // refs ppb ppc bits |
||||
s0 s3 XCHG // bits ppb ppc refs |
||||
2 ADDCONST // bits ppb ppc _20 |
||||
MUL // bits ppb _21 |
||||
s0 s2 XCHG // _21 ppb bits |
||||
MUL // _21 _22 |
||||
ADD // _23 |
||||
}> |
||||
check_owner PROCREF:<{ |
||||
// cat_table owner_info src_wc src_addr strict |
||||
s0 s4 XCHG // strict owner_info src_wc src_addr cat_table |
||||
ISNULL // strict owner_info src_wc src_addr _5 |
||||
s4 s(-1) PUXC // strict owner_info src_wc src_addr strict _5 |
||||
AND // strict owner_info src_wc src_addr _6 |
||||
IFJMP:<{ // strict owner_info src_wc src_addr |
||||
4 BLKDROP // |
||||
4000281702 PUSHINT // _7=4000281702 |
||||
}> // strict owner_info src_wc src_addr |
||||
s2 PUSH // strict owner_info src_wc src_addr owner_info |
||||
ISNULL // strict owner_info src_wc src_addr _8 |
||||
IFJMP:<{ // strict owner_info src_wc src_addr |
||||
3 BLKDROP // strict |
||||
4000263474 PUSHINT // strict _9=4000263474 |
||||
AND // _10 |
||||
}> // strict owner_info src_wc src_addr |
||||
s3 POP // src_addr owner_info src_wc |
||||
3798033458 PUSHINT // src_addr owner_info src_wc ERR_BAD2=3798033458 |
||||
s0 s2 XCHG // src_addr ERR_BAD2=3798033458 src_wc owner_info |
||||
CTOS // src_addr ERR_BAD2=3798033458 src_wc sown |
||||
DUP // src_addr ERR_BAD2=3798033458 src_wc sown sown |
||||
SBITS // src_addr ERR_BAD2=3798033458 src_wc sown _15 |
||||
283 PUSHINT // src_addr ERR_BAD2=3798033458 src_wc sown _15 _22 |
||||
LESS // src_addr ERR_BAD2=3798033458 src_wc sown _23 |
||||
IFJMP:<{ // src_addr ERR_BAD2=3798033458 src_wc sown |
||||
s2 s3 XCHG |
||||
3 BLKDROP // ERR_BAD2=3798033458 |
||||
}> // src_addr ERR_BAD2=3798033458 src_wc sown |
||||
19 LDU // src_addr ERR_BAD2=3798033458 src_wc _24 sown |
||||
SWAP |
||||
327324 PUSHINT // src_addr ERR_BAD2=3798033458 src_wc sown _24 _33 |
||||
NEQ // src_addr ERR_BAD2=3798033458 src_wc sown _34 |
||||
IFJMP:<{ // src_addr ERR_BAD2=3798033458 src_wc sown |
||||
s2 s3 XCHG |
||||
3 BLKDROP // ERR_BAD2=3798033458 |
||||
}> // src_addr ERR_BAD2=3798033458 src_wc sown |
||||
1 2 BLKDROP2 // src_addr src_wc sown |
||||
8 LDI // src_addr src_wc _37 sown |
||||
256 PLDU // src_addr src_wc owner_wc owner_addr |
||||
s0 s2 XCHG // src_addr owner_addr owner_wc src_wc |
||||
NEQ // src_addr owner_addr _42 |
||||
s0 s2 XCHG // _42 owner_addr src_addr |
||||
NEQ // _42 _43 |
||||
OR // _44 |
||||
IFJMP:<{ // |
||||
4000282478 PUSHINT // _45=4000282478 |
||||
}> // |
||||
0 PUSHINT // _46=0 |
||||
}> |
||||
perform_ctl_op PROCREF:<{ |
||||
// op src_wc src_addr in_msg |
||||
load_data INLINECALLDICT // op src_wc src_addr in_msg ctl domdata gc prices nhk lhk |
||||
s5 PUSH // op src_wc src_addr in_msg ctl domdata gc prices nhk lhk ctl |
||||
CTOS // op src_wc src_addr in_msg ctl domdata gc prices nhk lhk cs |
||||
8 LDI // op src_wc src_addr in_msg ctl domdata gc prices nhk lhk _13 cs |
||||
s0 s10 XCHG // op cs src_addr in_msg ctl domdata gc prices nhk lhk _13 src_wc |
||||
NEQ // op cs src_addr in_msg ctl domdata gc prices nhk lhk _16 |
||||
s0 s9 XCHG // op _16 src_addr in_msg ctl domdata gc prices nhk lhk cs |
||||
256 LDU // op _16 src_addr in_msg ctl domdata gc prices nhk lhk _83 _82 |
||||
DROP // op _16 src_addr in_msg ctl domdata gc prices nhk lhk _17 |
||||
s0 s8 XCHG2 // op _16 lhk in_msg ctl domdata gc prices nhk _17 src_addr |
||||
NEQ // op _16 lhk in_msg ctl domdata gc prices nhk _20 |
||||
s1 s8 XCHG // op nhk lhk in_msg ctl domdata gc prices _16 _20 |
||||
OR // op nhk lhk in_msg ctl domdata gc prices _21 |
||||
IFJMP:<{ // op nhk lhk in_msg ctl domdata gc prices |
||||
8 BLKDROP // |
||||
4000282478 PUSHINT // _22=4000282478 |
||||
send_error CALLDICT |
||||
}> // op nhk lhk in_msg ctl domdata gc prices |
||||
s0 s7 XCHG |
||||
1130909810 PUSHINT // prices nhk lhk in_msg ctl domdata gc op _24=1130909810 |
||||
EQUAL // prices nhk lhk in_msg ctl domdata gc _25 |
||||
IFJMP:<{ // prices nhk lhk in_msg ctl domdata gc |
||||
s6 POP // gc nhk lhk in_msg ctl domdata |
||||
s0 s2 XCHG // gc nhk lhk domdata ctl in_msg |
||||
32 LDU // gc nhk lhk domdata ctl _30 in_msg |
||||
LDGRAMS // gc nhk lhk domdata ctl _30 _33 in_msg |
||||
LDGRAMS // gc nhk lhk domdata ctl _30 _33 _35 in_msg |
||||
LDGRAMS // gc nhk lhk domdata ctl stdper ppr ppc ppb in_msg |
||||
ENDS |
||||
4 TUPLE // gc nhk lhk domdata ctl _40 |
||||
s0 s4 s4 XCHG3 |
||||
s0 s5 XCHG |
||||
s0 s3 XCHG // ctl domdata gc _40 nhk lhk |
||||
store_data CALLDICT |
||||
0 PUSHINT // _42=0 |
||||
send_ok CALLDICT |
||||
}> // prices nhk lhk in_msg ctl domdata gc |
||||
s4 POP // prices nhk gc in_msg ctl domdata |
||||
query_info GETGLOB |
||||
UNTRIPLE // prices nhk gc in_msg ctl domdata addr query_id op |
||||
DUP |
||||
1128555884 PUSHINT // prices nhk gc in_msg ctl domdata addr query_id op op _48=1128555884 |
||||
EQUAL // prices nhk gc in_msg ctl domdata addr query_id op _49 |
||||
IFJMP:<{ // prices nhk gc in_msg ctl domdata addr query_id op |
||||
s5 POP // prices nhk gc op ctl domdata addr query_id |
||||
s2 PUSH // prices nhk gc op ctl domdata addr query_id domdata |
||||
ISNULL // prices nhk gc op ctl domdata addr query_id _50 |
||||
IFNOT:<{ // prices nhk gc op ctl domdata addr query_id |
||||
s3 s4 XCHG |
||||
s2 s3 XCHG |
||||
s5 s7 s6 XCHG3 |
||||
1 PUSHINT |
||||
-1 PUSHINT // addr query_id op ctl domdata gc prices nhk _51=1 _52=-1 |
||||
housekeeping CALLDICT |
||||
-ROT // op addr query_id |
||||
}>ELSE<{ |
||||
s4 s7 XCHG |
||||
5 2 BLKDROP2 // op addr query_id |
||||
}> |
||||
load_data INLINECALLDICT // op addr query_id _95 _96 _97 _98 _99 _100 |
||||
s4 s5 XCHG |
||||
5 BLKDROP // op addr query_id domdata |
||||
ISNULL // op addr query_id _55 |
||||
IFNOTJMP:<{ // op addr query_id |
||||
3 BLKDROP // |
||||
4000605549 PUSHINT // _56=4000605549 |
||||
send_error CALLDICT |
||||
}> // op addr query_id |
||||
4016791929 PUSHINT // op addr query_id _58=4016791929 |
||||
s0 s1 s3 XCHG3 |
||||
0 PUSHINT |
||||
160 PUSHINT // addr _58=4016791929 query_id op _59=0 _62 |
||||
send_message CALLDICT |
||||
}> // prices nhk gc in_msg ctl domdata addr query_id op |
||||
s3 POP |
||||
s3 POP |
||||
s4 POP |
||||
s4 POP |
||||
s4 POP // query_id op addr in_msg |
||||
s2 PUSH |
||||
1415670629 PUSHINT // query_id op addr in_msg op _64=1415670629 |
||||
EQUAL // query_id op addr in_msg _65 |
||||
IFJMP:<{ // query_id op addr in_msg |
||||
LDGRAMS // query_id op addr _102 _101 |
||||
DROP // query_id op addr amount |
||||
s1 s3 XCHG |
||||
4016791929 PUSHINT |
||||
s3 s3 XCHG2 |
||||
64 PUSHINT // addr _69=4016791929 query_id op amount _70=64 |
||||
send_message CALLDICT |
||||
}> // query_id op addr in_msg |
||||
4 BLKDROP // |
||||
32 PUSHPOW2DEC // _72=4294967295 |
||||
send_error CALLDICT |
||||
}> |
||||
recv_internal PROC:<{ |
||||
// msg_value in_msg_cell in_msg |
||||
DUP // msg_value in_msg_cell in_msg in_msg |
||||
SBITS // msg_value in_msg_cell in_msg _3 |
||||
32 LESSINT // msg_value in_msg_cell in_msg _5 |
||||
IFJMP:<{ // msg_value in_msg_cell in_msg |
||||
3 BLKDROP // |
||||
}> // msg_value in_msg_cell in_msg |
||||
SWAP // msg_value in_msg in_msg_cell |
||||
CTOS // msg_value in_msg cs |
||||
4 LDU // msg_value in_msg flags cs |
||||
SWAP |
||||
1 PUSHINT // msg_value in_msg cs flags _12=1 |
||||
AND // msg_value in_msg cs _13 |
||||
IFJMP:<{ // msg_value in_msg cs |
||||
3 BLKDROP // |
||||
}> // msg_value in_msg cs |
||||
LDMSGADDR // msg_value in_msg _327 _326 |
||||
DROP // msg_value in_msg s_addr |
||||
DUP // msg_value in_msg s_addr s_addr |
||||
REWRITESTDADDR // msg_value in_msg s_addr src_wc src_addr |
||||
s0 s3 XCHG // msg_value src_addr s_addr src_wc in_msg |
||||
32 LDU // msg_value src_addr s_addr src_wc op in_msg |
||||
OVER // msg_value src_addr s_addr src_wc op in_msg op |
||||
IFNOTJMP:<{ // msg_value src_addr s_addr src_wc op in_msg |
||||
6 BLKDROP // |
||||
}> // msg_value src_addr s_addr src_wc op in_msg |
||||
0 PUSHINT // msg_value src_addr s_addr src_wc op in_msg query_id=0 |
||||
OVER // msg_value src_addr s_addr src_wc op in_msg query_id=0 in_msg |
||||
SBITS // msg_value src_addr s_addr src_wc op in_msg query_id=0 _26 |
||||
63 GTINT // msg_value src_addr s_addr src_wc op in_msg query_id=0 _28 |
||||
IF:<{ // msg_value src_addr s_addr src_wc op in_msg query_id=0 |
||||
DROP // msg_value src_addr s_addr src_wc op in_msg |
||||
64 LDU // msg_value src_addr s_addr src_wc op query_id in_msg |
||||
SWAP // msg_value src_addr s_addr src_wc op in_msg query_id |
||||
}> // msg_value src_addr s_addr src_wc op in_msg query_id |
||||
s4 s0 s2 XC2PU // msg_value src_addr in_msg src_wc op s_addr query_id op |
||||
TRIPLE |
||||
query_info SETGLOB |
||||
DUP |
||||
31 PUSHPOW2 // msg_value src_addr in_msg src_wc op op _34 |
||||
AND // msg_value src_addr in_msg src_wc op _35 |
||||
IFJMP:<{ // msg_value src_addr in_msg src_wc op |
||||
5 BLKDROP // |
||||
}> // msg_value src_addr in_msg src_wc op |
||||
DUP // msg_value src_addr in_msg src_wc op op |
||||
24 RSHIFT# // msg_value src_addr in_msg src_wc op _37 |
||||
67 EQINT // msg_value src_addr in_msg src_wc op _39 |
||||
IFJMP:<{ // msg_value src_addr in_msg src_wc op |
||||
s4 POP // op src_addr in_msg src_wc |
||||
-ROT // op src_wc src_addr in_msg |
||||
perform_ctl_op INLINECALLDICT |
||||
}> // msg_value src_addr in_msg src_wc op |
||||
DUP |
||||
1919248228 PUSHINT // msg_value src_addr in_msg src_wc op op _42=1919248228 |
||||
EQUAL // msg_value src_addr in_msg src_wc op _45 |
||||
OVER |
||||
1886547820 PUSHINT // msg_value src_addr in_msg src_wc op _45 op _46=1886547820 |
||||
EQUAL // msg_value src_addr in_msg src_wc op _45 _47 |
||||
1 LSHIFT# // msg_value src_addr in_msg src_wc op _45 _49 |
||||
ADD // msg_value src_addr in_msg src_wc op _50 |
||||
OVER |
||||
1970300004 PUSHINT // msg_value src_addr in_msg src_wc op _50 op _51=1970300004 |
||||
EQUAL // msg_value src_addr in_msg src_wc op _50 _52 |
||||
2 LSHIFT# // msg_value src_addr in_msg src_wc op _50 _54 |
||||
ADD // msg_value src_addr in_msg src_wc op _55 |
||||
SWAP |
||||
1735354211 PUSHINT // msg_value src_addr in_msg src_wc _55 op _56=1735354211 |
||||
EQUAL // msg_value src_addr in_msg src_wc _55 _57 |
||||
3 LSHIFT# // msg_value src_addr in_msg src_wc _55 _59 |
||||
ADD // msg_value src_addr in_msg src_wc qt |
||||
DUP // msg_value src_addr in_msg src_wc qt qt |
||||
IFNOTJMP:<{ // msg_value src_addr in_msg src_wc qt |
||||
5 BLKDROP // |
||||
32 PUSHPOW2DEC // _61=4294967295 |
||||
send_error CALLDICT |
||||
}> // msg_value src_addr in_msg src_wc qt |
||||
NEGATE // msg_value src_addr in_msg src_wc qt |
||||
load_data INLINECALLDICT // msg_value src_addr in_msg src_wc qt ctl domdata gc prices nhk lhk |
||||
s6 PUSH // msg_value src_addr in_msg src_wc qt ctl domdata gc prices nhk lhk qt |
||||
8 EQINT // msg_value src_addr in_msg src_wc qt ctl domdata gc prices nhk lhk _72 |
||||
IFJMP:<{ // msg_value src_addr in_msg src_wc qt ctl domdata gc prices nhk lhk |
||||
DROP |
||||
s5 POP |
||||
s5 POP |
||||
s6 POP |
||||
s6 POP // domdata gc in_msg prices nhk ctl |
||||
s0 s3 XCHG // domdata gc ctl prices nhk in_msg |
||||
32 LDI // domdata gc ctl prices nhk _341 _340 |
||||
DROP // domdata gc ctl prices nhk max_steps |
||||
s3 s5 XCHG |
||||
s3 s4 XCHG |
||||
1 PUSHINT |
||||
SWAP // ctl domdata gc prices nhk _77=1 max_steps |
||||
housekeeping CALLDICT |
||||
4016791929 PUSHINT // _79=4016791929 |
||||
send_error CALLDICT |
||||
}> // msg_value src_addr in_msg src_wc qt ctl domdata gc prices nhk lhk |
||||
s0 s8 XCHG // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg |
||||
LDOPTREF // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk domain_cell in_msg |
||||
OVER // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk domain_cell in_msg domain_cell |
||||
ISNULL // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk domain_cell in_msg _88 |
||||
IF:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk domain_cell in_msg |
||||
NIP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg |
||||
6 LDU // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk bytes in_msg |
||||
OVER // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk bytes in_msg bytes |
||||
0 EQINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk bytes in_msg fail |
||||
s0 s2 XCHG // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk fail in_msg bytes |
||||
3 LSHIFT# // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk fail in_msg _97 |
||||
LDSLICEX // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk fail domain in_msg |
||||
}>ELSE<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk domain_cell in_msg |
||||
SWAP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain_cell |
||||
CTOS // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain |
||||
DUP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain domain |
||||
SBITREFS // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain bits refs |
||||
SWAP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain refs bits |
||||
-8 ADDCONST // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain refs _104 |
||||
-121 PUSHINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain refs _104 _107 |
||||
AND // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain refs _108 |
||||
OR // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain fail |
||||
s0 s2 XCHG // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk fail domain in_msg |
||||
}> |
||||
s2 PUSH // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk fail domain in_msg fail |
||||
IFNOT:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk fail domain in_msg |
||||
s2 POP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain |
||||
DUP |
||||
8 PUSHINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain domain _110=8 |
||||
SDCUTLAST // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain _111 |
||||
8 PLDU // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain fail |
||||
s0 s2 XCHG // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk fail domain in_msg |
||||
}> // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk fail domain in_msg |
||||
s0 s2 XCHG // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain fail |
||||
IFJMP:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain |
||||
12 BLKDROP // |
||||
4000275504 PUSHINT // _114=4000275504 |
||||
send_error CALLDICT |
||||
}> // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain |
||||
NOW // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n |
||||
PUSHNULL // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n _120 |
||||
DUP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info |
||||
0 PUSHINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info _124=0 |
||||
s0 s0 s4 PUSH3 // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key=0 zeros=0 exp=0 tail |
||||
DUP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key=0 zeros=0 exp=0 tail tail |
||||
SBITS // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key=0 zeros=0 exp=0 tail _126 |
||||
3 RSHIFTC# // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key=0 zeros=0 exp=0 tail _128 |
||||
REPEAT:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp tail |
||||
PUSHNULL |
||||
s6 POP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp tail |
||||
8 LDU // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp _131 tail |
||||
SWAP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp tail _131 |
||||
0 EQINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp tail z |
||||
s3 s3 XCPU // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key z exp tail zeros z |
||||
SUB // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key z exp tail zeros |
||||
s0 s3 XCHG // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp tail z |
||||
IF:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp tail |
||||
s3 POP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp |
||||
s2 PUSH // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp tail |
||||
SBITS // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp _137 |
||||
s7 s(-1) PUXC // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp domain _137 |
||||
SDSKIPLAST // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp _138 |
||||
SHA256U // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp _139 |
||||
32 RSHIFT# // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp key |
||||
s0 s12 PUSH2 |
||||
224 PUSHINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp key key domdata _146 |
||||
DICTUGET |
||||
NULLSWAPIFNOT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp key val found? |
||||
IF:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp key val |
||||
1 2 BLKDROP2 // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key val |
||||
32 LDU // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp val |
||||
s1 s7 PUSH2 // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp val exp n |
||||
GEQ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp val _151 |
||||
IF:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp val |
||||
LDREF // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp cat_table val |
||||
ENDS |
||||
0 PUSHINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp cat_table _158=0 |
||||
SWAP |
||||
8 PUSHPOW2 // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp _158=0 cat_table _159=256 |
||||
DICTUGETREF // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp cown ok |
||||
IF:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp cown |
||||
s5 POP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp |
||||
}>ELSE<{ |
||||
DROP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp |
||||
}> |
||||
}>ELSE<{ |
||||
DROP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp |
||||
}> |
||||
SWAP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp key |
||||
}>ELSE<{ |
||||
DROP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp key |
||||
}> |
||||
s0 s3 XCHG // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp tail |
||||
}> // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp tail |
||||
}> |
||||
DROP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp |
||||
SWAP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key exp zeros |
||||
4 GTINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key exp _162 |
||||
IFJMP:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key exp |
||||
15 BLKDROP |
||||
2DROP // |
||||
4017511472 PUSHINT // _163=4017511472 |
||||
send_error CALLDICT |
||||
}> // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key exp |
||||
s12 PUSH // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key exp qt |
||||
1 NEQINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key exp _167 |
||||
s4 PUSH |
||||
s0 s4 XCHG |
||||
s15 s1 s3 XCHG3 |
||||
s0 17 s() XCHG |
||||
SWAP // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table cat_table owner_info src_wc src_addr _167 |
||||
check_owner INLINECALLDICT // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table err |
||||
DUP // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table err err |
||||
IFJMP:<{ // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table err |
||||
14 1 BLKDROP2 // err |
||||
send_error CALLDICT |
||||
}> // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table err |
||||
DROP // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table |
||||
s9 PUSH // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table qt |
||||
2 NEQINT // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table _173 |
||||
IF:<{ // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table |
||||
s0 s3 XCHG // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n in_msg |
||||
LDREF // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n _361 _360 |
||||
DROP // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data |
||||
DUP // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data data |
||||
DICTEMPTY // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data _176 |
||||
IFNOT:<{ // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data |
||||
0 PUSHINT // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data _179=0 |
||||
OVER |
||||
8 PUSHPOW2 // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data _179=0 data _180=256 |
||||
DICTUGETREF // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data oinfo ok |
||||
IF:<{ // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data oinfo |
||||
CTOS // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data cs |
||||
DUP // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data cs cs |
||||
SBITS // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data cs _185 |
||||
283 PUSHINT // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data cs _185 _192 |
||||
GEQ // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data cs _193 |
||||
31 THROWIFNOT |
||||
19 PLDU // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data _197 |
||||
327324 PUSHINT // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data _197 _202 |
||||
EQUAL // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data _203 |
||||
31 THROWIFNOT |
||||
}>ELSE<{ |
||||
DROP // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data |
||||
}> |
||||
DUP |
||||
8 PUSHPOW2 // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data data _208=256 |
||||
DICTUMIN |
||||
NULLSWAPIFNOT2 // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data _365 _364 _366 |
||||
2 1 BLKDROP2 // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data minok |
||||
OVER |
||||
8 PUSHPOW2 // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data minok data _213=256 |
||||
DICTUMAX |
||||
NULLSWAPIFNOT2 // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data minok _368 _367 _369 |
||||
2 1 BLKDROP2 // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data minok maxok |
||||
AND // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data _216 |
||||
31 THROWIFNOT |
||||
}> // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data |
||||
}>ELSE<{ // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table |
||||
s3 POP // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n |
||||
s2 PUSH // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data |
||||
}> |
||||
s5 PUSH // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data prices |
||||
4 UNTUPLE // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data stdper ppr ppc ppb |
||||
s3 PUSH // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data stdper ppr ppc ppb stdper |
||||
IFNOTJMP:<{ // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data stdper ppr ppc ppb |
||||
15 BLKDROP |
||||
3 BLKDROP // |
||||
3545187910 PUSHINT // _223=3545187910 |
||||
send_error CALLDICT |
||||
}> // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data stdper ppr ppc ppb |
||||
s4 PUSH |
||||
s3 s7 XCHG |
||||
-ROT // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table ppr n data stdper domain data ppc ppb |
||||
calcprice_internal INLINECALLDICT // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table ppr n data stdper _226 |
||||
s11 PUSH // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table ppr n data stdper _226 qt |
||||
4 NEQINT // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table ppr n data stdper _226 _228 |
||||
s1 s5 XCHG // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table _226 n data stdper ppr _228 |
||||
AND // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table _226 n data stdper _229 |
||||
s1 s4 XCHG // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data _226 _229 |
||||
ADD // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data price |
||||
s0 s14 XCHG |
||||
30 PUSHPOW2 // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data msg_value _233 |
||||
SUB // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data _234 |
||||
s14 PUSH // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data _234 price |
||||
LESS // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data _235 |
||||
IFJMP:<{ // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data |
||||
14 BLKDROP // |
||||
3883023472 PUSHINT // _236=3883023472 |
||||
send_error CALLDICT |
||||
}> // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data |
||||
s9 PUSH // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data qt |
||||
2 EQINT // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data _243 |
||||
IFJMP:<{ // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data |
||||
s3 POP |
||||
s8 POP // price key lhk exp n ctl domdata gc prices nhk data stdper |
||||
s7 s7 XCPU // price key lhk exp stdper ctl domdata gc prices nhk data n stdper |
||||
ADD // price key lhk exp stdper ctl domdata gc prices nhk data _244 |
||||
s8 s(-1) PUXC // price key lhk exp stdper ctl domdata gc prices nhk data exp _244 |
||||
GREATER // price key lhk exp stdper ctl domdata gc prices nhk data _245 |
||||
IFJMP:<{ // price key lhk exp stdper ctl domdata gc prices nhk data |
||||
11 BLKDROP // |
||||
4083511919 PUSHINT // _246=4083511919 |
||||
send_error CALLDICT |
||||
}> // price key lhk exp stdper ctl domdata gc prices nhk data |
||||
s7 s6 PUSH2 // price key lhk exp stdper ctl domdata gc prices nhk data exp stdper |
||||
ADD // price key lhk exp stdper ctl domdata gc prices nhk data _249 |
||||
NEWC // price key lhk exp stdper ctl domdata gc prices nhk data _249 _250 |
||||
32 STU // price key lhk exp stdper ctl domdata gc prices nhk data _252 |
||||
STREF // price key lhk exp stdper ctl domdata gc prices nhk _253 |
||||
s0 s9 s4 XCPUXC |
||||
224 PUSHINT // price key lhk exp stdper ctl nhk gc prices _253 key domdata _256 |
||||
DICTUSETB // price key lhk exp stdper ctl nhk gc prices domdata |
||||
s0 s6 XCHG // price key lhk domdata stdper ctl nhk gc prices exp |
||||
224 LSHIFT# // price key lhk domdata stdper ctl nhk gc prices _262 |
||||
s0 s8 XCHG2 // price prices lhk domdata stdper ctl nhk gc _262 key |
||||
ADD // price prices lhk domdata stdper ctl nhk gc gckeyO |
||||
s0 s4 XCHG // price prices lhk domdata gckeyO ctl nhk gc stdper |
||||
224 LSHIFT# // price prices lhk domdata gckeyO ctl nhk gc _268 |
||||
s4 s(-1) PUXC // price prices lhk domdata gckeyO ctl nhk gc gckeyO _268 |
||||
ADD // price prices lhk domdata gckeyO ctl nhk gc gckeyN |
||||
s4 s4 XCHG2 |
||||
8 PUSHPOW2 // price prices lhk domdata gckeyN ctl nhk gckeyO gc _271=256 |
||||
DICTUDEL // price prices lhk domdata gckeyN ctl nhk _376 _377 |
||||
DROP // price prices lhk domdata gckeyN ctl nhk gc |
||||
NEWC // price prices lhk domdata gckeyN ctl nhk gc _274 |
||||
s0 s4 s4 XCHG3 |
||||
8 PUSHPOW2 // price prices lhk domdata nhk ctl _274 gckeyN gc _275=256 |
||||
DICTUSETB // price prices lhk domdata nhk ctl gc |
||||
s0 s3 XCHG |
||||
s5 s5 s4 XCHG3 |
||||
1 PUSHINT // price ctl domdata gc prices nhk lhk _277=1 |
||||
housekeeping CALLDICT |
||||
send_ok CALLDICT |
||||
}> // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data |
||||
s9 PUSH // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data qt |
||||
1 EQINT // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data _281 |
||||
IFJMP:<{ // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data |
||||
s9 POP |
||||
s9 POP // price key lhk n data ctl domdata gc prices nhk cat_table stdper |
||||
SWAP // price key lhk n data ctl domdata gc prices nhk stdper cat_table |
||||
ISNULL // price key lhk n data ctl domdata gc prices nhk stdper _282 |
||||
IFNOTJMP:<{ // price key lhk n data ctl domdata gc prices nhk stdper |
||||
11 BLKDROP // |
||||
3781980773 PUSHINT // _283=3781980773 |
||||
send_error CALLDICT |
||||
}> // price key lhk n data ctl domdata gc prices nhk stdper |
||||
s1 s7 XCHG // price key lhk nhk data ctl domdata gc prices n stdper |
||||
ADD // price key lhk nhk data ctl domdata gc prices expires_at |
||||
DUP |
||||
NEWC // price key lhk nhk data ctl domdata gc prices expires_at expires_at _288 |
||||
32 STU // price key lhk nhk data ctl domdata gc prices expires_at _290 |
||||
s1 s6 XCHG // price key lhk nhk expires_at ctl domdata gc prices data _290 |
||||
STREF // price key lhk nhk expires_at ctl domdata gc prices _291 |
||||
s0 s8 s3 XCPUXC |
||||
224 PUSHINT // price key lhk nhk expires_at ctl prices gc _291 key domdata _294 |
||||
DICTUSETB // price key lhk nhk expires_at ctl prices gc domdata |
||||
s4 PUSH // price key lhk nhk expires_at ctl prices gc domdata expires_at |
||||
224 LSHIFT# // price key lhk nhk expires_at ctl prices gc domdata _300 |
||||
s0 s8 XCHG2 // price domdata lhk nhk expires_at ctl prices gc _300 key |
||||
OR // price domdata lhk nhk expires_at ctl prices gc gckey |
||||
NEWC // price domdata lhk nhk expires_at ctl prices gc gckey _303 |
||||
s0 s2 XCHG |
||||
8 PUSHPOW2 // price domdata lhk nhk expires_at ctl prices _303 gckey gc _304=256 |
||||
DICTUSETB // price domdata lhk nhk expires_at ctl prices gc |
||||
s4 s3 XCHG2 // price domdata lhk prices gc ctl nhk expires_at |
||||
MIN // price domdata lhk prices gc ctl _306 |
||||
s1 s5 XCHG |
||||
s3 s0 s4 XCHG3 |
||||
1 PUSHINT // price ctl domdata gc prices _306 lhk _307=1 |
||||
housekeeping CALLDICT |
||||
send_ok CALLDICT |
||||
}> // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data |
||||
3 1 BLKDROP2 // price key lhk exp qt ctl domdata gc prices nhk data |
||||
s0 s6 XCHG // price key lhk exp data ctl domdata gc prices nhk qt |
||||
4 EQINT // price key lhk exp data ctl domdata gc prices nhk _311 |
||||
IFJMP:<{ // price key lhk exp data ctl domdata gc prices nhk |
||||
s0 s6 XCHG |
||||
NEWC // price key lhk nhk data ctl domdata gc prices exp _313 |
||||
32 STU // price key lhk nhk data ctl domdata gc prices _315 |
||||
s1 s5 XCHG // price key lhk nhk prices ctl domdata gc data _315 |
||||
STREF // price key lhk nhk prices ctl domdata gc _316 |
||||
s7 s2 XCHG2 |
||||
224 PUSHINT // price gc lhk nhk prices ctl _316 key domdata _319 |
||||
DICTUSETB // price gc lhk nhk prices ctl domdata |
||||
s5 s4 XCHG2 |
||||
s1 s3 XCHG |
||||
1 PUSHINT // price ctl domdata gc prices nhk lhk _321=1 |
||||
housekeeping CALLDICT |
||||
send_ok CALLDICT |
||||
}> // price key lhk exp data ctl domdata gc prices nhk |
||||
10 BLKDROP // |
||||
}> |
||||
recv_external PROC:<{ |
||||
// in_msg |
||||
DROP // |
||||
load_data INLINECALLDICT // _12 _13 _14 _15 _16 _17 |
||||
NIP // ctl dd gc prices lhk |
||||
IFNOTJMP:<{ // ctl dd gc prices |
||||
ACCEPT |
||||
32 PUSHPOW2DEC // ctl dd gc prices _9=4294967295 |
||||
NOW // ctl dd gc prices _9=4294967295 _10 |
||||
store_data CALLDICT |
||||
}> // ctl dd gc prices |
||||
4 BLKDROP // |
||||
}> |
||||
dnsdictlookup PROCREF:<{ |
||||
// domain nowtime |
||||
OVER // domain nowtime domain |
||||
SBITREFS // domain nowtime bits refs |
||||
OVER |
||||
7 PUSHINT // domain nowtime bits refs bits _6=7 |
||||
AND // domain nowtime bits refs _7 |
||||
OR // domain nowtime bits _8 |
||||
30 THROWIF |
||||
DUP // domain nowtime bits bits |
||||
IFNOT:<{ // domain nowtime bits |
||||
30 THROW |
||||
}> // domain nowtime bits |
||||
s2 PUSH |
||||
8 PUSHINT // domain nowtime bits domain _13=8 |
||||
SDCUTLAST // domain nowtime bits _14 |
||||
8 PLDU // domain nowtime bits domain_last_byte |
||||
IF:<{ // domain nowtime bits |
||||
0 PUSHINT // domain nowtime bits _17=0 |
||||
NEWC // domain nowtime bits _17=0 _18 |
||||
s0 s4 XCHG2 // _17=0 nowtime bits _18 domain |
||||
STSLICER // _17=0 nowtime bits _19 |
||||
s1 s3 XCHG // bits nowtime _17=0 _19 |
||||
8 STU // bits nowtime _21 |
||||
ENDC // bits nowtime _22 |
||||
CTOS // bits nowtime domain |
||||
s0 s2 XCHG // domain nowtime bits |
||||
8 ADDCONST // domain nowtime bits |
||||
}> // domain nowtime bits |
||||
DUP // domain nowtime bits bits |
||||
8 EQINT // domain nowtime bits _27 |
||||
IFJMP:<{ // domain nowtime bits |
||||
3 BLKDROP // |
||||
0 PUSHINT // _28=0 |
||||
PUSHNULL // _28=0 _29 |
||||
8 PUSHINT // _28=0 _29 _30=8 |
||||
PUSHNULL // _28=0 _29 _30=8 _31 |
||||
}> // domain nowtime bits |
||||
s2 PUSH // domain nowtime bits domain |
||||
8 PLDU // domain nowtime bits domain_first_byte |
||||
0 EQINT // domain nowtime bits _36 |
||||
IF:<{ // domain nowtime bits |
||||
s0 s2 XCHG // bits nowtime domain |
||||
8 LDU // bits nowtime _95 _94 |
||||
NIP // bits nowtime domain |
||||
s0 s2 XCHG // domain nowtime bits |
||||
-8 ADDCONST // domain nowtime bits |
||||
}> // domain nowtime bits |
||||
c4 PUSH // domain nowtime bits _43 |
||||
CTOS // domain nowtime bits ds |
||||
LDREF // domain nowtime bits _97 _96 |
||||
NIP // domain nowtime bits ds |
||||
LDDICT // domain nowtime bits _99 _98 |
||||
DROP // domain nowtime bits root |
||||
PUSHNULL // domain nowtime bits root val |
||||
-1 PUSHINT // domain nowtime bits root val tail_bits=-1 |
||||
s5 PUSH // domain nowtime bits root val tail_bits=-1 tail |
||||
s0 s4 XCHG // domain nowtime tail root val tail_bits=-1 bits |
||||
3 RSHIFT# // domain nowtime tail root val tail_bits=-1 _57 |
||||
REPEAT:<{ // domain nowtime tail root val tail_bits |
||||
s0 s3 XCHG // domain nowtime tail_bits root val tail |
||||
8 LDU // domain nowtime tail_bits root val _58 tail |
||||
SWAP // domain nowtime tail_bits root val tail _58 |
||||
0 EQINT // domain nowtime tail_bits root val tail _62 |
||||
IF:<{ // domain nowtime tail_bits root val tail |
||||
DUP // domain nowtime tail_bits root val tail tail |
||||
SBITS // domain nowtime tail_bits root val tail _64 |
||||
s6 s(-1) PUXC // domain nowtime tail_bits root val tail domain _64 |
||||
SDSKIPLAST // domain nowtime tail_bits root val tail _65 |
||||
SHA256U // domain nowtime tail_bits root val tail _66 |
||||
32 RSHIFT# // domain nowtime tail_bits root val tail key |
||||
s3 PUSH |
||||
224 PUSHINT // domain nowtime tail_bits root val tail key root _73 |
||||
DICTUGET |
||||
NULLSWAPIFNOT // domain nowtime tail_bits root val tail v found? |
||||
IF:<{ // domain nowtime tail_bits root val tail v |
||||
DUP // domain nowtime tail_bits root val tail v v |
||||
32 PLDU // domain nowtime tail_bits root val tail v _76 |
||||
s6 PUSH // domain nowtime tail_bits root val tail v _76 nowtime |
||||
GEQ // domain nowtime tail_bits root val tail v _77 |
||||
IF:<{ // domain nowtime tail_bits root val tail v |
||||
s2 POP |
||||
s3 POP // domain nowtime tail root val |
||||
s2 PUSH // domain nowtime tail root val tail |
||||
SBITS // domain nowtime tail root val tail_bits |
||||
s0 s3 XCHG // domain nowtime tail_bits root val tail |
||||
}>ELSE<{ |
||||
DROP // domain nowtime tail_bits root val tail |
||||
}> |
||||
}>ELSE<{ |
||||
DROP // domain nowtime tail_bits root val tail |
||||
}> |
||||
}> // domain nowtime tail_bits root val tail |
||||
s0 s3 XCHG // domain nowtime tail root val tail_bits |
||||
}> |
||||
2 2 BLKDROP2 |
||||
s2 POP // domain tail_bits val |
||||
DUP // domain tail_bits val val |
||||
ISNULL // domain tail_bits val _79 |
||||
IFJMP:<{ // domain tail_bits val |
||||
3 BLKDROP // |
||||
0 PUSHINT // _80=0 |
||||
PUSHNULL // _80=0 _81 |
||||
OVER // _80=0 _81 _82=0 |
||||
PUSHNULL // _80=0 _81 _82=0 _83 |
||||
}> // domain tail_bits val |
||||
32 LDU // domain tail_bits _84 val |
||||
LDREF // domain tail_bits _84 _107 _106 |
||||
DROP // domain tail_bits _84 _87 |
||||
s2 PUSH // domain tail_bits _84 _87 tail_bits |
||||
0 EQINT // domain tail_bits _84 _87 _90 |
||||
s4 s3 XCHG2 // _87 _90 _84 domain tail_bits |
||||
SDSKIPLAST // _87 _90 _84 _91 |
||||
s3 s3 s0 XCHG3 // _84 _87 _90 _91 |
||||
}> |
||||
dnsresolve PROC:<{ |
||||
// domain category |
||||
SWAP |
||||
NOW // category domain _6 |
||||
dnsdictlookup INLINECALLDICT // category exp cat_table exact? pfx |
||||
s0 s3 XCHG // category pfx cat_table exact? exp |
||||
IFNOTJMP:<{ // category pfx cat_table exact? |
||||
3 1 BLKDROP2 // exact? |
||||
PUSHNULL // exact? _8 |
||||
}> // category pfx cat_table exact? |
||||
IFNOT:<{ // category pfx cat_table |
||||
11732114750494247458678882651681748623800183221773167493832867265755123357695 PUSHINT |
||||
s3 POP // category=11732114750494247458678882651681748623800183221773167493832867265755123357695 pfx cat_table |
||||
}> // category pfx cat_table |
||||
SWAP // category cat_table pfx |
||||
SBITS // category cat_table pfx_bits |
||||
s2 PUSH // category cat_table pfx_bits category |
||||
IFJMP:<{ // category cat_table pfx_bits |
||||
-ROT |
||||
8 PUSHPOW2 // pfx_bits category cat_table _13=256 |
||||
DICTUGETOPTREF // pfx_bits cat_found |
||||
}> // category cat_table pfx_bits |
||||
s2 POP // pfx_bits cat_table |
||||
}> |
||||
getexpirationx PROCINLINE:<{ |
||||
// domain nowtime |
||||
dnsdictlookup INLINECALLDICT // _7 _8 _9 _10 |
||||
3 BLKDROP // exp |
||||
}> |
||||
getexpiration PROC:<{ |
||||
// domain |
||||
NOW // domain _1 |
||||
getexpirationx INLINECALLDICT // _2 |
||||
}> |
||||
getstdperiod PROC:<{ |
||||
// |
||||
load_prices INLINECALLDICT // _5 _6 _7 _8 |
||||
3 BLKDROP // stdper |
||||
}> |
||||
getppr PROC:<{ |
||||
// |
||||
load_prices INLINECALLDICT // _5 _6 _7 _8 |
||||
s2 s3 XCHG |
||||
3 BLKDROP // ppr |
||||
}> |
||||
getppc PROC:<{ |
||||
// |
||||
load_prices INLINECALLDICT // _5 _6 _7 _8 |
||||
s1 s3 XCHG |
||||
3 BLKDROP // ppc |
||||
}> |
||||
getppb PROC:<{ |
||||
// |
||||
load_prices INLINECALLDICT // _5 _6 _7 _8 |
||||
3 1 BLKDROP2 // ppb |
||||
}> |
||||
calcprice PROC:<{ |
||||
// domain val |
||||
load_prices INLINECALLDICT // domain val _8 _9 _10 _11 |
||||
2 2 BLKDROP2 // domain val ppc ppb |
||||
calcprice_internal INLINECALLDICT // _7 |
||||
}> |
||||
calcregprice PROC:<{ |
||||
// domain val |
||||
load_prices INLINECALLDICT // domain val _9 _10 _11 _12 |
||||
s3 POP // domain val ppb ppr ppc |
||||
s3 s4 XCHG |
||||
s4 s0 s4 XCHG3 // ppr domain val ppc ppb |
||||
calcprice_internal INLINECALLDICT // ppr _7 |
||||
ADD // _8 |
||||
}> |
||||
}END>c |
||||
|
||||
boc>B "build/dns-auto-code.cell" B>file |
@ -0,0 +1,972 @@
|
||||
"Asm.fif" include |
||||
// automatically generated from `contracts/dns-auto-code.fc` incl:`contracts/imports/stdlib.fc` |
||||
PROGRAM{ |
||||
DECLPROC load_data |
||||
DECLPROC load_prices |
||||
DECLPROC store_data |
||||
DECLPROC send_message |
||||
DECLPROC send_error |
||||
DECLPROC send_ok |
||||
DECLPROC housekeeping |
||||
DECLPROC calcprice_internal |
||||
DECLPROC check_owner |
||||
DECLPROC perform_ctl_op |
||||
DECLPROC recv_internal |
||||
DECLPROC recv_external |
||||
DECLPROC dnsdictlookup |
||||
123660 DECLMETHOD dnsresolve |
||||
87450 DECLMETHOD getexpirationx |
||||
110574 DECLMETHOD getexpiration |
||||
67418 DECLMETHOD getstdperiod |
||||
109522 DECLMETHOD getppr |
||||
108994 DECLMETHOD getppc |
||||
113123 DECLMETHOD getppb |
||||
113304 DECLMETHOD calcprice |
||||
85700 DECLMETHOD calcregprice |
||||
DECLGLOBVAR query_info |
||||
load_data PROCREF:<{ |
||||
// |
||||
c4 PUSH // _1 |
||||
CTOS // cs |
||||
LDREF // _3 cs |
||||
LDDICT // _3 _5 cs |
||||
LDDICT // _3 _5 _7 cs |
||||
30 LDU // _3 _5 _7 _10 cs |
||||
LDGRAMS // _3 _5 _7 _10 _13 cs |
||||
LDGRAMS // _3 _5 _7 _10 _13 _15 cs |
||||
LDGRAMS // _3 _5 _7 _10 _13 _15 _17 cs |
||||
4 -ROLL // _3 _5 _7 cs _10 _13 _15 _17 |
||||
4 TUPLE // _3 _5 _7 cs _9 |
||||
SWAP // _3 _5 _7 _9 cs |
||||
32 LDU // _3 _5 _7 _9 _19 cs |
||||
32 LDU // _3 _5 _7 _9 _19 _42 _41 |
||||
DROP // _3 _5 _7 _9 _19 _22 |
||||
}> |
||||
load_prices PROCREF:<{ |
||||
// |
||||
c4 PUSH // _1 |
||||
CTOS // cs |
||||
LDREF // _19 _18 |
||||
NIP // cs |
||||
LDDICT // _21 _20 |
||||
NIP // cs |
||||
LDDICT // _23 _22 |
||||
NIP // cs |
||||
30 LDU // _9 cs |
||||
LDGRAMS // _9 _12 cs |
||||
LDGRAMS // _9 _12 _14 cs |
||||
LDGRAMS // _9 _12 _14 _31 _30 |
||||
DROP // _9 _12 _14 _16 |
||||
}> |
||||
store_data PROC:<{ |
||||
// ctl dd gc prices nhk lhk |
||||
s0 s2 XCHG // ctl dd gc lhk nhk prices |
||||
4 UNTUPLE // ctl dd gc lhk nhk sp ppr ppc ppb |
||||
s0 s8 XCHG |
||||
NEWC // ppb dd gc lhk nhk sp ppr ppc ctl _11 |
||||
STREF // ppb dd gc lhk nhk sp ppr ppc _12 |
||||
s1 s7 XCHG // ppb ppc gc lhk nhk sp ppr dd _12 |
||||
STDICT // ppb ppc gc lhk nhk sp ppr _13 |
||||
s1 s5 XCHG // ppb ppc ppr lhk nhk sp gc _13 |
||||
STDICT // ppb ppc ppr lhk nhk sp _14 |
||||
30 STU // ppb ppc ppr lhk nhk _16 |
||||
s0 s3 XCHG2 // ppb ppc nhk lhk _16 ppr |
||||
STGRAMS // ppb ppc nhk lhk _17 |
||||
s0 s3 XCHG2 // ppb lhk nhk _17 ppc |
||||
STGRAMS // ppb lhk nhk _18 |
||||
s0 s3 XCHG2 // nhk lhk _18 ppb |
||||
STGRAMS // nhk lhk _19 |
||||
s1 s2 XCHG // lhk nhk _19 |
||||
32 STU // lhk _21 |
||||
32 STU // _23 |
||||
ENDC // _24 |
||||
c4 POP |
||||
}> |
||||
send_message PROC:<{ |
||||
// addr tag query_id body grams mode |
||||
0 PUSHINT // addr tag query_id body grams mode _7=0 |
||||
24 PUSHINT // addr tag query_id body grams mode _7=0 _8=24 |
||||
NEWC // addr tag query_id body grams mode _7=0 _8=24 _9 |
||||
6 STU // addr tag query_id body grams mode _7=0 _11 |
||||
s0 s7 XCHG2 // _7=0 tag query_id body grams mode _11 addr |
||||
STSLICER // _7=0 tag query_id body grams mode _12 |
||||
ROT // _7=0 tag query_id body mode _12 grams |
||||
STGRAMS // _7=0 tag query_id body mode _13 |
||||
s1 s5 XCHG // mode tag query_id body _7=0 _13 |
||||
107 STU // mode tag query_id body _27 |
||||
s1 s3 XCHG // mode body query_id tag _27 |
||||
32 STU // mode body query_id _29 |
||||
64 STU // mode body msg |
||||
OVER // mode body msg body |
||||
-1 GTINT // mode body msg _33 |
||||
IF:<{ // mode body msg |
||||
32 STU // mode msg |
||||
}>ELSE<{ |
||||
NIP // mode msg |
||||
}> |
||||
ENDC // mode _37 |
||||
SWAP // _37 mode |
||||
SENDRAWMSG |
||||
}> |
||||
send_error PROC:<{ |
||||
// error_code |
||||
query_info GETGLOB |
||||
UNTRIPLE // error_code addr query_id op |
||||
s2 s3 XCHG |
||||
0 PUSHINT |
||||
64 PUSHINT // addr error_code query_id op _5=0 _6=64 |
||||
send_message CALLDICT |
||||
}> |
||||
send_ok PROC:<{ |
||||
// price |
||||
4 PUSHINT // price _1=4 |
||||
RAWRESERVE |
||||
query_info GETGLOB |
||||
UNTRIPLE // addr query_id op |
||||
4016791929 PUSHINT // addr query_id op _7=4016791929 |
||||
-ROT |
||||
0 PUSHINT |
||||
7 PUSHPOW2 // addr _7=4016791929 query_id op _8=0 _9=128 |
||||
send_message CALLDICT |
||||
}> |
||||
housekeeping PROC:<{ |
||||
// ctl dd gc prices nhk lhk max_steps |
||||
NOW // ctl dd gc prices nhk lhk max_steps n |
||||
s2 PUSH // ctl dd gc prices nhk lhk max_steps n lhk |
||||
60 ADDCONST // ctl dd gc prices nhk lhk max_steps n _10 |
||||
s4 s(-1) PUXC // ctl dd gc prices nhk lhk max_steps n nhk _10 |
||||
MAX // ctl dd gc prices nhk lhk max_steps n _11 |
||||
s1 s(-1) PUXC // ctl dd gc prices nhk lhk max_steps n n _11 |
||||
LESS // ctl dd gc prices nhk lhk max_steps n _12 |
||||
IFJMP:<{ // ctl dd gc prices nhk lhk max_steps n |
||||
2DROP // ctl dd gc prices nhk lhk |
||||
store_data CALLDICT |
||||
}> // ctl dd gc prices nhk lhk max_steps n |
||||
s2 POP // ctl dd gc prices nhk n max_steps |
||||
s4 PUSH |
||||
8 PUSHPOW2 // ctl dd gc prices nhk n max_steps gc _17=256 |
||||
DICTUMIN |
||||
NULLSWAPIFNOT2 // ctl dd gc prices nhk n max_steps _63 _62 _64 |
||||
s2 POP // ctl dd gc prices nhk n max_steps found? mkey |
||||
WHILE:<{ |
||||
s1 s2 XCPU // ctl dd gc prices nhk n max_steps mkey found? max_steps |
||||
AND // ctl dd gc prices nhk n max_steps mkey _19 |
||||
}>DO<{ // ctl dd gc prices nhk n max_steps mkey |
||||
s3 POP // ctl dd gc prices mkey n max_steps |
||||
s2 PUSH // ctl dd gc prices mkey n max_steps mkey |
||||
224 RSHIFT# // ctl dd gc prices mkey n max_steps nhk |
||||
s0 s2 PUSH2 // ctl dd gc prices mkey n max_steps nhk nhk n |
||||
LESS // ctl dd gc prices mkey n max_steps nhk _24 |
||||
IF:<{ // ctl dd gc prices mkey n max_steps nhk |
||||
DROP // ctl dd gc prices mkey n max_steps |
||||
s2 PUSH // ctl dd gc prices mkey n max_steps mkey |
||||
224 MODPOW2# // ctl dd gc prices mkey n max_steps key |
||||
s0 s6 PUSH2 |
||||
224 PUSHINT // ctl dd gc prices mkey n max_steps key key dd _35 |
||||
DICTUGET |
||||
NULLSWAPIFNOT // ctl dd gc prices mkey n max_steps key val found? |
||||
IF:<{ // ctl dd gc prices mkey n max_steps key val |
||||
32 PLDU // ctl dd gc prices mkey n max_steps key exp |
||||
s3 PUSH // ctl dd gc prices mkey n max_steps key exp n |
||||
LEQ // ctl dd gc prices mkey n max_steps key _40 |
||||
IF:<{ // ctl dd gc prices mkey n max_steps key |
||||
s0 s6 XCHG2 |
||||
224 PUSHINT // ctl max_steps gc prices mkey n key dd _44 |
||||
DICTUDEL // ctl max_steps gc prices mkey n _67 _68 |
||||
DROP // ctl max_steps gc prices mkey n dd |
||||
s0 s5 XCHG // ctl dd gc prices mkey n max_steps |
||||
}>ELSE<{ |
||||
DROP // ctl dd gc prices mkey n max_steps |
||||
}> |
||||
}>ELSE<{ |
||||
2DROP // ctl dd gc prices mkey n max_steps |
||||
}> |
||||
s2 s4 XCHG2 |
||||
8 PUSHPOW2 // ctl dd max_steps prices n mkey gc _47=256 |
||||
DICTUDEL // ctl dd max_steps prices n _69 _70 |
||||
DROP // ctl dd max_steps prices n gc |
||||
DUP |
||||
8 PUSHPOW2 // ctl dd max_steps prices n gc gc _50=256 |
||||
DICTUMIN |
||||
NULLSWAPIFNOT2 // ctl dd max_steps prices n gc _72 _71 _73 |
||||
s2 POP // ctl dd max_steps prices n gc found? mkey |
||||
OVER // ctl dd max_steps prices n gc found? mkey found? |
||||
IF:<{ // ctl dd max_steps prices n gc found? mkey |
||||
DUP // ctl dd max_steps prices n gc found? mkey mkey |
||||
224 RSHIFT# // ctl dd max_steps prices n gc found? mkey _52 |
||||
}>ELSE<{ // ctl dd max_steps prices n gc found? mkey |
||||
32 PUSHPOW2DEC // ctl dd max_steps prices n gc found? mkey _52=4294967295 |
||||
}> // ctl dd max_steps prices n gc found? mkey nhk |
||||
s0 s6 XCHG // ctl dd nhk prices n gc found? mkey max_steps |
||||
DEC // ctl dd nhk prices n gc found? mkey max_steps |
||||
}>ELSE<{ // ctl dd gc prices mkey n max_steps nhk |
||||
s5 s1 s5 XCHG3 |
||||
s0 s3 XCHG |
||||
FALSE |
||||
s0 s2 XCHG // ctl dd nhk prices n gc found? mkey max_steps |
||||
}> |
||||
s3 s6 XCHG |
||||
s3 s4 XCHG |
||||
-ROT // ctl dd gc prices nhk n max_steps found? mkey |
||||
}> // ctl dd gc prices nhk n max_steps mkey |
||||
2DROP // ctl dd gc prices nhk n |
||||
store_data CALLDICT |
||||
}> |
||||
calcprice_internal PROCREF:<{ |
||||
// domain data ppc ppb |
||||
s0 s2 XCHG |
||||
100 PUSHINT // domain ppb ppc data _7=100 |
||||
CDATASIZE // domain ppb ppc _24 _25 _26 |
||||
s2 POP // domain ppb ppc refs bits |
||||
s0 s4 XCHG // bits ppb ppc refs domain |
||||
SBITS // bits ppb ppc refs _9 |
||||
1 LSHIFT# // bits ppb ppc refs _11 |
||||
192 PUSHINT // bits ppb ppc refs _11 _16 |
||||
ADD // bits ppb ppc refs _17 |
||||
s1 s4 XCHG // refs ppb ppc bits _17 |
||||
ADD // refs ppb ppc bits |
||||
s0 s3 XCHG // bits ppb ppc refs |
||||
2 ADDCONST // bits ppb ppc _20 |
||||
MUL // bits ppb _21 |
||||
s0 s2 XCHG // _21 ppb bits |
||||
MUL // _21 _22 |
||||
ADD // _23 |
||||
}> |
||||
check_owner PROCREF:<{ |
||||
// cat_table owner_info src_wc src_addr strict |
||||
s0 s4 XCHG // strict owner_info src_wc src_addr cat_table |
||||
ISNULL // strict owner_info src_wc src_addr _5 |
||||
s4 s(-1) PUXC // strict owner_info src_wc src_addr strict _5 |
||||
AND // strict owner_info src_wc src_addr _6 |
||||
IFJMP:<{ // strict owner_info src_wc src_addr |
||||
4 BLKDROP // |
||||
4000281702 PUSHINT // _7=4000281702 |
||||
}> // strict owner_info src_wc src_addr |
||||
s2 PUSH // strict owner_info src_wc src_addr owner_info |
||||
ISNULL // strict owner_info src_wc src_addr _8 |
||||
IFJMP:<{ // strict owner_info src_wc src_addr |
||||
3 BLKDROP // strict |
||||
4000263474 PUSHINT // strict _9=4000263474 |
||||
AND // _10 |
||||
}> // strict owner_info src_wc src_addr |
||||
s3 POP // src_addr owner_info src_wc |
||||
3798033458 PUSHINT // src_addr owner_info src_wc ERR_BAD2=3798033458 |
||||
s0 s2 XCHG // src_addr ERR_BAD2=3798033458 src_wc owner_info |
||||
CTOS // src_addr ERR_BAD2=3798033458 src_wc sown |
||||
DUP // src_addr ERR_BAD2=3798033458 src_wc sown sown |
||||
SBITS // src_addr ERR_BAD2=3798033458 src_wc sown _15 |
||||
283 PUSHINT // src_addr ERR_BAD2=3798033458 src_wc sown _15 _22 |
||||
LESS // src_addr ERR_BAD2=3798033458 src_wc sown _23 |
||||
IFJMP:<{ // src_addr ERR_BAD2=3798033458 src_wc sown |
||||
s2 s3 XCHG |
||||
3 BLKDROP // ERR_BAD2=3798033458 |
||||
}> // src_addr ERR_BAD2=3798033458 src_wc sown |
||||
19 LDU // src_addr ERR_BAD2=3798033458 src_wc _24 sown |
||||
SWAP |
||||
327324 PUSHINT // src_addr ERR_BAD2=3798033458 src_wc sown _24 _33 |
||||
NEQ // src_addr ERR_BAD2=3798033458 src_wc sown _34 |
||||
IFJMP:<{ // src_addr ERR_BAD2=3798033458 src_wc sown |
||||
s2 s3 XCHG |
||||
3 BLKDROP // ERR_BAD2=3798033458 |
||||
}> // src_addr ERR_BAD2=3798033458 src_wc sown |
||||
1 2 BLKDROP2 // src_addr src_wc sown |
||||
8 LDI // src_addr src_wc _37 sown |
||||
256 PLDU // src_addr src_wc owner_wc owner_addr |
||||
s0 s2 XCHG // src_addr owner_addr owner_wc src_wc |
||||
NEQ // src_addr owner_addr _42 |
||||
s0 s2 XCHG // _42 owner_addr src_addr |
||||
NEQ // _42 _43 |
||||
OR // _44 |
||||
IFJMP:<{ // |
||||
4000282478 PUSHINT // _45=4000282478 |
||||
}> // |
||||
0 PUSHINT // _46=0 |
||||
}> |
||||
perform_ctl_op PROCREF:<{ |
||||
// op src_wc src_addr in_msg |
||||
load_data INLINECALLDICT // op src_wc src_addr in_msg ctl domdata gc prices nhk lhk |
||||
s5 PUSH // op src_wc src_addr in_msg ctl domdata gc prices nhk lhk ctl |
||||
CTOS // op src_wc src_addr in_msg ctl domdata gc prices nhk lhk cs |
||||
8 LDI // op src_wc src_addr in_msg ctl domdata gc prices nhk lhk _13 cs |
||||
s0 s10 XCHG // op cs src_addr in_msg ctl domdata gc prices nhk lhk _13 src_wc |
||||
NEQ // op cs src_addr in_msg ctl domdata gc prices nhk lhk _16 |
||||
s0 s9 XCHG // op _16 src_addr in_msg ctl domdata gc prices nhk lhk cs |
||||
256 LDU // op _16 src_addr in_msg ctl domdata gc prices nhk lhk _83 _82 |
||||
DROP // op _16 src_addr in_msg ctl domdata gc prices nhk lhk _17 |
||||
s0 s8 XCHG2 // op _16 lhk in_msg ctl domdata gc prices nhk _17 src_addr |
||||
NEQ // op _16 lhk in_msg ctl domdata gc prices nhk _20 |
||||
s1 s8 XCHG // op nhk lhk in_msg ctl domdata gc prices _16 _20 |
||||
OR // op nhk lhk in_msg ctl domdata gc prices _21 |
||||
IFJMP:<{ // op nhk lhk in_msg ctl domdata gc prices |
||||
8 BLKDROP // |
||||
4000282478 PUSHINT // _22=4000282478 |
||||
send_error CALLDICT |
||||
}> // op nhk lhk in_msg ctl domdata gc prices |
||||
s0 s7 XCHG |
||||
1130909810 PUSHINT // prices nhk lhk in_msg ctl domdata gc op _24=1130909810 |
||||
EQUAL // prices nhk lhk in_msg ctl domdata gc _25 |
||||
IFJMP:<{ // prices nhk lhk in_msg ctl domdata gc |
||||
s6 POP // gc nhk lhk in_msg ctl domdata |
||||
s0 s2 XCHG // gc nhk lhk domdata ctl in_msg |
||||
32 LDU // gc nhk lhk domdata ctl _30 in_msg |
||||
LDGRAMS // gc nhk lhk domdata ctl _30 _33 in_msg |
||||
LDGRAMS // gc nhk lhk domdata ctl _30 _33 _35 in_msg |
||||
LDGRAMS // gc nhk lhk domdata ctl stdper ppr ppc ppb in_msg |
||||
ENDS |
||||
4 TUPLE // gc nhk lhk domdata ctl _40 |
||||
s0 s4 s4 XCHG3 |
||||
s0 s5 XCHG |
||||
s0 s3 XCHG // ctl domdata gc _40 nhk lhk |
||||
store_data CALLDICT |
||||
0 PUSHINT // _42=0 |
||||
send_ok CALLDICT |
||||
}> // prices nhk lhk in_msg ctl domdata gc |
||||
s4 POP // prices nhk gc in_msg ctl domdata |
||||
query_info GETGLOB |
||||
UNTRIPLE // prices nhk gc in_msg ctl domdata addr query_id op |
||||
DUP |
||||
1128555884 PUSHINT // prices nhk gc in_msg ctl domdata addr query_id op op _48=1128555884 |
||||
EQUAL // prices nhk gc in_msg ctl domdata addr query_id op _49 |
||||
IFJMP:<{ // prices nhk gc in_msg ctl domdata addr query_id op |
||||
s5 POP // prices nhk gc op ctl domdata addr query_id |
||||
s2 PUSH // prices nhk gc op ctl domdata addr query_id domdata |
||||
ISNULL // prices nhk gc op ctl domdata addr query_id _50 |
||||
IFNOT:<{ // prices nhk gc op ctl domdata addr query_id |
||||
s3 s4 XCHG |
||||
s2 s3 XCHG |
||||
s5 s7 s6 XCHG3 |
||||
1 PUSHINT |
||||
-1 PUSHINT // addr query_id op ctl domdata gc prices nhk _51=1 _52=-1 |
||||
housekeeping CALLDICT |
||||
-ROT // op addr query_id |
||||
}>ELSE<{ |
||||
s4 s7 XCHG |
||||
5 2 BLKDROP2 // op addr query_id |
||||
}> |
||||
load_data INLINECALLDICT // op addr query_id _95 _96 _97 _98 _99 _100 |
||||
s4 s5 XCHG |
||||
5 BLKDROP // op addr query_id domdata |
||||
ISNULL // op addr query_id _55 |
||||
IFNOTJMP:<{ // op addr query_id |
||||
3 BLKDROP // |
||||
4000605549 PUSHINT // _56=4000605549 |
||||
send_error CALLDICT |
||||
}> // op addr query_id |
||||
4016791929 PUSHINT // op addr query_id _58=4016791929 |
||||
s0 s1 s3 XCHG3 |
||||
0 PUSHINT |
||||
160 PUSHINT // addr _58=4016791929 query_id op _59=0 _62 |
||||
send_message CALLDICT |
||||
}> // prices nhk gc in_msg ctl domdata addr query_id op |
||||
s3 POP |
||||
s3 POP |
||||
s4 POP |
||||
s4 POP |
||||
s4 POP // query_id op addr in_msg |
||||
s2 PUSH |
||||
1415670629 PUSHINT // query_id op addr in_msg op _64=1415670629 |
||||
EQUAL // query_id op addr in_msg _65 |
||||
IFJMP:<{ // query_id op addr in_msg |
||||
LDGRAMS // query_id op addr _102 _101 |
||||
DROP // query_id op addr amount |
||||
s1 s3 XCHG |
||||
4016791929 PUSHINT |
||||
s3 s3 XCHG2 |
||||
64 PUSHINT // addr _69=4016791929 query_id op amount _70=64 |
||||
send_message CALLDICT |
||||
}> // query_id op addr in_msg |
||||
4 BLKDROP // |
||||
32 PUSHPOW2DEC // _72=4294967295 |
||||
send_error CALLDICT |
||||
}> |
||||
recv_internal PROC:<{ |
||||
// msg_value in_msg_cell in_msg |
||||
DUP // msg_value in_msg_cell in_msg in_msg |
||||
SBITS // msg_value in_msg_cell in_msg _3 |
||||
32 LESSINT // msg_value in_msg_cell in_msg _5 |
||||
IFJMP:<{ // msg_value in_msg_cell in_msg |
||||
3 BLKDROP // |
||||
}> // msg_value in_msg_cell in_msg |
||||
SWAP // msg_value in_msg in_msg_cell |
||||
CTOS // msg_value in_msg cs |
||||
4 LDU // msg_value in_msg flags cs |
||||
SWAP |
||||
1 PUSHINT // msg_value in_msg cs flags _12=1 |
||||
AND // msg_value in_msg cs _13 |
||||
IFJMP:<{ // msg_value in_msg cs |
||||
3 BLKDROP // |
||||
}> // msg_value in_msg cs |
||||
LDMSGADDR // msg_value in_msg _327 _326 |
||||
DROP // msg_value in_msg s_addr |
||||
DUP // msg_value in_msg s_addr s_addr |
||||
REWRITESTDADDR // msg_value in_msg s_addr src_wc src_addr |
||||
s0 s3 XCHG // msg_value src_addr s_addr src_wc in_msg |
||||
32 LDU // msg_value src_addr s_addr src_wc op in_msg |
||||
OVER // msg_value src_addr s_addr src_wc op in_msg op |
||||
IFNOTJMP:<{ // msg_value src_addr s_addr src_wc op in_msg |
||||
6 BLKDROP // |
||||
}> // msg_value src_addr s_addr src_wc op in_msg |
||||
0 PUSHINT // msg_value src_addr s_addr src_wc op in_msg query_id=0 |
||||
OVER // msg_value src_addr s_addr src_wc op in_msg query_id=0 in_msg |
||||
SBITS // msg_value src_addr s_addr src_wc op in_msg query_id=0 _26 |
||||
63 GTINT // msg_value src_addr s_addr src_wc op in_msg query_id=0 _28 |
||||
IF:<{ // msg_value src_addr s_addr src_wc op in_msg query_id=0 |
||||
DROP // msg_value src_addr s_addr src_wc op in_msg |
||||
64 LDU // msg_value src_addr s_addr src_wc op query_id in_msg |
||||
SWAP // msg_value src_addr s_addr src_wc op in_msg query_id |
||||
}> // msg_value src_addr s_addr src_wc op in_msg query_id |
||||
s4 s0 s2 XC2PU // msg_value src_addr in_msg src_wc op s_addr query_id op |
||||
TRIPLE |
||||
query_info SETGLOB |
||||
DUP |
||||
31 PUSHPOW2 // msg_value src_addr in_msg src_wc op op _34 |
||||
AND // msg_value src_addr in_msg src_wc op _35 |
||||
IFJMP:<{ // msg_value src_addr in_msg src_wc op |
||||
5 BLKDROP // |
||||
}> // msg_value src_addr in_msg src_wc op |
||||
DUP // msg_value src_addr in_msg src_wc op op |
||||
24 RSHIFT# // msg_value src_addr in_msg src_wc op _37 |
||||
67 EQINT // msg_value src_addr in_msg src_wc op _39 |
||||
IFJMP:<{ // msg_value src_addr in_msg src_wc op |
||||
s4 POP // op src_addr in_msg src_wc |
||||
-ROT // op src_wc src_addr in_msg |
||||
perform_ctl_op INLINECALLDICT |
||||
}> // msg_value src_addr in_msg src_wc op |
||||
DUP |
||||
1919248228 PUSHINT // msg_value src_addr in_msg src_wc op op _42=1919248228 |
||||
EQUAL // msg_value src_addr in_msg src_wc op _45 |
||||
OVER |
||||
1886547820 PUSHINT // msg_value src_addr in_msg src_wc op _45 op _46=1886547820 |
||||
EQUAL // msg_value src_addr in_msg src_wc op _45 _47 |
||||
1 LSHIFT# // msg_value src_addr in_msg src_wc op _45 _49 |
||||
ADD // msg_value src_addr in_msg src_wc op _50 |
||||
OVER |
||||
1970300004 PUSHINT // msg_value src_addr in_msg src_wc op _50 op _51=1970300004 |
||||
EQUAL // msg_value src_addr in_msg src_wc op _50 _52 |
||||
2 LSHIFT# // msg_value src_addr in_msg src_wc op _50 _54 |
||||
ADD // msg_value src_addr in_msg src_wc op _55 |
||||
SWAP |
||||
1735354211 PUSHINT // msg_value src_addr in_msg src_wc _55 op _56=1735354211 |
||||
EQUAL // msg_value src_addr in_msg src_wc _55 _57 |
||||
3 LSHIFT# // msg_value src_addr in_msg src_wc _55 _59 |
||||
ADD // msg_value src_addr in_msg src_wc qt |
||||
DUP // msg_value src_addr in_msg src_wc qt qt |
||||
IFNOTJMP:<{ // msg_value src_addr in_msg src_wc qt |
||||
5 BLKDROP // |
||||
32 PUSHPOW2DEC // _61=4294967295 |
||||
send_error CALLDICT |
||||
}> // msg_value src_addr in_msg src_wc qt |
||||
NEGATE // msg_value src_addr in_msg src_wc qt |
||||
load_data INLINECALLDICT // msg_value src_addr in_msg src_wc qt ctl domdata gc prices nhk lhk |
||||
s6 PUSH // msg_value src_addr in_msg src_wc qt ctl domdata gc prices nhk lhk qt |
||||
8 EQINT // msg_value src_addr in_msg src_wc qt ctl domdata gc prices nhk lhk _72 |
||||
IFJMP:<{ // msg_value src_addr in_msg src_wc qt ctl domdata gc prices nhk lhk |
||||
DROP |
||||
s5 POP |
||||
s5 POP |
||||
s6 POP |
||||
s6 POP // domdata gc in_msg prices nhk ctl |
||||
s0 s3 XCHG // domdata gc ctl prices nhk in_msg |
||||
32 LDI // domdata gc ctl prices nhk _341 _340 |
||||
DROP // domdata gc ctl prices nhk max_steps |
||||
s3 s5 XCHG |
||||
s3 s4 XCHG |
||||
1 PUSHINT |
||||
SWAP // ctl domdata gc prices nhk _77=1 max_steps |
||||
housekeeping CALLDICT |
||||
4016791929 PUSHINT // _79=4016791929 |
||||
send_error CALLDICT |
||||
}> // msg_value src_addr in_msg src_wc qt ctl domdata gc prices nhk lhk |
||||
s0 s8 XCHG // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg |
||||
LDOPTREF // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk domain_cell in_msg |
||||
OVER // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk domain_cell in_msg domain_cell |
||||
ISNULL // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk domain_cell in_msg _88 |
||||
IF:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk domain_cell in_msg |
||||
NIP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg |
||||
6 LDU // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk bytes in_msg |
||||
OVER // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk bytes in_msg bytes |
||||
0 EQINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk bytes in_msg fail |
||||
s0 s2 XCHG // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk fail in_msg bytes |
||||
3 LSHIFT# // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk fail in_msg _97 |
||||
LDSLICEX // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk fail domain in_msg |
||||
}>ELSE<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk domain_cell in_msg |
||||
SWAP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain_cell |
||||
CTOS // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain |
||||
DUP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain domain |
||||
SBITREFS // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain bits refs |
||||
SWAP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain refs bits |
||||
-8 ADDCONST // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain refs _104 |
||||
-121 PUSHINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain refs _104 _107 |
||||
AND // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain refs _108 |
||||
OR // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain fail |
||||
s0 s2 XCHG // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk fail domain in_msg |
||||
}> |
||||
s2 PUSH // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk fail domain in_msg fail |
||||
IFNOT:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk fail domain in_msg |
||||
s2 POP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain |
||||
DUP |
||||
8 PUSHINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain domain _110=8 |
||||
SDCUTLAST // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain _111 |
||||
8 PLDU // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain fail |
||||
s0 s2 XCHG // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk fail domain in_msg |
||||
}> // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk fail domain in_msg |
||||
s0 s2 XCHG // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain fail |
||||
IFJMP:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain |
||||
12 BLKDROP // |
||||
4000275504 PUSHINT // _114=4000275504 |
||||
send_error CALLDICT |
||||
}> // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain |
||||
NOW // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n |
||||
PUSHNULL // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n _120 |
||||
DUP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info |
||||
0 PUSHINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info _124=0 |
||||
s0 s0 s4 PUSH3 // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key=0 zeros=0 exp=0 tail |
||||
DUP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key=0 zeros=0 exp=0 tail tail |
||||
SBITS // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key=0 zeros=0 exp=0 tail _126 |
||||
3 RSHIFTC# // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key=0 zeros=0 exp=0 tail _128 |
||||
REPEAT:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp tail |
||||
PUSHNULL |
||||
s6 POP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp tail |
||||
8 LDU // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp _131 tail |
||||
SWAP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp tail _131 |
||||
0 EQINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp tail z |
||||
s3 s3 XCPU // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key z exp tail zeros z |
||||
SUB // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key z exp tail zeros |
||||
s0 s3 XCHG // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp tail z |
||||
IF:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp tail |
||||
s3 POP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp |
||||
s2 PUSH // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp tail |
||||
SBITS // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp _137 |
||||
s7 s(-1) PUXC // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp domain _137 |
||||
SDSKIPLAST // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp _138 |
||||
SHA256U // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp _139 |
||||
32 RSHIFT# // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp key |
||||
s0 s12 PUSH2 |
||||
224 PUSHINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp key key domdata _146 |
||||
DICTUGET |
||||
NULLSWAPIFNOT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp key val found? |
||||
IF:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp key val |
||||
1 2 BLKDROP2 // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key val |
||||
32 LDU // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp val |
||||
s1 s7 PUSH2 // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp val exp n |
||||
GEQ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp val _151 |
||||
IF:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp val |
||||
LDREF // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp cat_table val |
||||
ENDS |
||||
0 PUSHINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp cat_table _158=0 |
||||
SWAP |
||||
8 PUSHPOW2 // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp _158=0 cat_table _159=256 |
||||
DICTUGETREF // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp cown ok |
||||
IF:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp cown |
||||
s5 POP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp |
||||
}>ELSE<{ |
||||
DROP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp |
||||
}> |
||||
}>ELSE<{ |
||||
DROP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros key exp |
||||
}> |
||||
SWAP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp key |
||||
}>ELSE<{ |
||||
DROP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info tail zeros exp key |
||||
}> |
||||
s0 s3 XCHG // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp tail |
||||
}> // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp tail |
||||
}> |
||||
DROP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key zeros exp |
||||
SWAP // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key exp zeros |
||||
4 GTINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key exp _162 |
||||
IFJMP:<{ // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key exp |
||||
15 BLKDROP |
||||
2DROP // |
||||
4017511472 PUSHINT // _163=4017511472 |
||||
send_error CALLDICT |
||||
}> // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key exp |
||||
s12 PUSH // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key exp qt |
||||
1 NEQINT // msg_value src_addr lhk src_wc qt ctl domdata gc prices nhk in_msg domain n cat_table owner_info key exp _167 |
||||
s4 PUSH |
||||
s0 s4 XCHG |
||||
s15 s1 s3 XCHG3 |
||||
s0 17 s() XCHG |
||||
SWAP // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table cat_table owner_info src_wc src_addr _167 |
||||
check_owner INLINECALLDICT // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table err |
||||
DUP // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table err err |
||||
IFJMP:<{ // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table err |
||||
14 1 BLKDROP2 // err |
||||
send_error CALLDICT |
||||
}> // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table err |
||||
DROP // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table |
||||
s9 PUSH // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table qt |
||||
2 NEQINT // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table _173 |
||||
IF:<{ // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table |
||||
s0 s3 XCHG // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n in_msg |
||||
LDREF // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n _361 _360 |
||||
DROP // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data |
||||
DUP // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data data |
||||
DICTEMPTY // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data _176 |
||||
IFNOT:<{ // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data |
||||
0 PUSHINT // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data _179=0 |
||||
OVER |
||||
8 PUSHPOW2 // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data _179=0 data _180=256 |
||||
DICTUGETREF // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data oinfo ok |
||||
IF:<{ // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data oinfo |
||||
CTOS // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data cs |
||||
DUP // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data cs cs |
||||
SBITS // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data cs _185 |
||||
283 PUSHINT // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data cs _185 _192 |
||||
GEQ // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data cs _193 |
||||
31 THROWIFNOT |
||||
19 PLDU // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data _197 |
||||
327324 PUSHINT // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data _197 _202 |
||||
EQUAL // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data _203 |
||||
31 THROWIFNOT |
||||
}>ELSE<{ |
||||
DROP // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data |
||||
}> |
||||
DUP |
||||
8 PUSHPOW2 // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data data _208=256 |
||||
DICTUMIN |
||||
NULLSWAPIFNOT2 // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data _365 _364 _366 |
||||
2 1 BLKDROP2 // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data minok |
||||
OVER |
||||
8 PUSHPOW2 // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data minok data _213=256 |
||||
DICTUMAX |
||||
NULLSWAPIFNOT2 // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data minok _368 _367 _369 |
||||
2 1 BLKDROP2 // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data minok maxok |
||||
AND // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data _216 |
||||
31 THROWIFNOT |
||||
}> // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data |
||||
}>ELSE<{ // msg_value key lhk exp qt ctl domdata gc prices nhk in_msg domain n cat_table |
||||
s3 POP // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n |
||||
s2 PUSH // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data |
||||
}> |
||||
s5 PUSH // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data prices |
||||
4 UNTUPLE // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data stdper ppr ppc ppb |
||||
s3 PUSH // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data stdper ppr ppc ppb stdper |
||||
IFNOTJMP:<{ // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data stdper ppr ppc ppb |
||||
15 BLKDROP |
||||
3 BLKDROP // |
||||
3545187910 PUSHINT // _223=3545187910 |
||||
send_error CALLDICT |
||||
}> // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table domain n data stdper ppr ppc ppb |
||||
s4 PUSH |
||||
s3 s7 XCHG |
||||
-ROT // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table ppr n data stdper domain data ppc ppb |
||||
calcprice_internal INLINECALLDICT // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table ppr n data stdper _226 |
||||
s11 PUSH // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table ppr n data stdper _226 qt |
||||
4 NEQINT // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table ppr n data stdper _226 _228 |
||||
s1 s5 XCHG // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table _226 n data stdper ppr _228 |
||||
AND // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table _226 n data stdper _229 |
||||
s1 s4 XCHG // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data _226 _229 |
||||
ADD // msg_value key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data price |
||||
s0 s14 XCHG |
||||
30 PUSHPOW2 // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data msg_value _233 |
||||
SUB // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data _234 |
||||
s14 PUSH // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data _234 price |
||||
LESS // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data _235 |
||||
IFJMP:<{ // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data |
||||
14 BLKDROP // |
||||
3883023472 PUSHINT // _236=3883023472 |
||||
send_error CALLDICT |
||||
}> // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data |
||||
s9 PUSH // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data qt |
||||
2 EQINT // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data _243 |
||||
IFJMP:<{ // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data |
||||
s3 POP |
||||
s8 POP // price key lhk exp n ctl domdata gc prices nhk data stdper |
||||
s7 s7 XCPU // price key lhk exp stdper ctl domdata gc prices nhk data n stdper |
||||
ADD // price key lhk exp stdper ctl domdata gc prices nhk data _244 |
||||
s8 s(-1) PUXC // price key lhk exp stdper ctl domdata gc prices nhk data exp _244 |
||||
GREATER // price key lhk exp stdper ctl domdata gc prices nhk data _245 |
||||
IFJMP:<{ // price key lhk exp stdper ctl domdata gc prices nhk data |
||||
11 BLKDROP // |
||||
4083511919 PUSHINT // _246=4083511919 |
||||
send_error CALLDICT |
||||
}> // price key lhk exp stdper ctl domdata gc prices nhk data |
||||
s7 s6 PUSH2 // price key lhk exp stdper ctl domdata gc prices nhk data exp stdper |
||||
ADD // price key lhk exp stdper ctl domdata gc prices nhk data _249 |
||||
NEWC // price key lhk exp stdper ctl domdata gc prices nhk data _249 _250 |
||||
32 STU // price key lhk exp stdper ctl domdata gc prices nhk data _252 |
||||
STREF // price key lhk exp stdper ctl domdata gc prices nhk _253 |
||||
s0 s9 s4 XCPUXC |
||||
224 PUSHINT // price key lhk exp stdper ctl nhk gc prices _253 key domdata _256 |
||||
DICTUSETB // price key lhk exp stdper ctl nhk gc prices domdata |
||||
s0 s6 XCHG // price key lhk domdata stdper ctl nhk gc prices exp |
||||
224 LSHIFT# // price key lhk domdata stdper ctl nhk gc prices _262 |
||||
s0 s8 XCHG2 // price prices lhk domdata stdper ctl nhk gc _262 key |
||||
ADD // price prices lhk domdata stdper ctl nhk gc gckeyO |
||||
s0 s4 XCHG // price prices lhk domdata gckeyO ctl nhk gc stdper |
||||
224 LSHIFT# // price prices lhk domdata gckeyO ctl nhk gc _268 |
||||
s4 s(-1) PUXC // price prices lhk domdata gckeyO ctl nhk gc gckeyO _268 |
||||
ADD // price prices lhk domdata gckeyO ctl nhk gc gckeyN |
||||
s4 s4 XCHG2 |
||||
8 PUSHPOW2 // price prices lhk domdata gckeyN ctl nhk gckeyO gc _271=256 |
||||
DICTUDEL // price prices lhk domdata gckeyN ctl nhk _376 _377 |
||||
DROP // price prices lhk domdata gckeyN ctl nhk gc |
||||
NEWC // price prices lhk domdata gckeyN ctl nhk gc _274 |
||||
s0 s4 s4 XCHG3 |
||||
8 PUSHPOW2 // price prices lhk domdata nhk ctl _274 gckeyN gc _275=256 |
||||
DICTUSETB // price prices lhk domdata nhk ctl gc |
||||
s0 s3 XCHG |
||||
s5 s5 s4 XCHG3 |
||||
1 PUSHINT // price ctl domdata gc prices nhk lhk _277=1 |
||||
housekeeping CALLDICT |
||||
send_ok CALLDICT |
||||
}> // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data |
||||
s9 PUSH // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data qt |
||||
1 EQINT // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data _281 |
||||
IFJMP:<{ // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data |
||||
s9 POP |
||||
s9 POP // price key lhk n data ctl domdata gc prices nhk cat_table stdper |
||||
SWAP // price key lhk n data ctl domdata gc prices nhk stdper cat_table |
||||
ISNULL // price key lhk n data ctl domdata gc prices nhk stdper _282 |
||||
IFNOTJMP:<{ // price key lhk n data ctl domdata gc prices nhk stdper |
||||
11 BLKDROP // |
||||
3781980773 PUSHINT // _283=3781980773 |
||||
send_error CALLDICT |
||||
}> // price key lhk n data ctl domdata gc prices nhk stdper |
||||
s1 s7 XCHG // price key lhk nhk data ctl domdata gc prices n stdper |
||||
ADD // price key lhk nhk data ctl domdata gc prices expires_at |
||||
DUP |
||||
NEWC // price key lhk nhk data ctl domdata gc prices expires_at expires_at _288 |
||||
32 STU // price key lhk nhk data ctl domdata gc prices expires_at _290 |
||||
s1 s6 XCHG // price key lhk nhk expires_at ctl domdata gc prices data _290 |
||||
STREF // price key lhk nhk expires_at ctl domdata gc prices _291 |
||||
s0 s8 s3 XCPUXC |
||||
224 PUSHINT // price key lhk nhk expires_at ctl prices gc _291 key domdata _294 |
||||
DICTUSETB // price key lhk nhk expires_at ctl prices gc domdata |
||||
s4 PUSH // price key lhk nhk expires_at ctl prices gc domdata expires_at |
||||
224 LSHIFT# // price key lhk nhk expires_at ctl prices gc domdata _300 |
||||
s0 s8 XCHG2 // price domdata lhk nhk expires_at ctl prices gc _300 key |
||||
OR // price domdata lhk nhk expires_at ctl prices gc gckey |
||||
NEWC // price domdata lhk nhk expires_at ctl prices gc gckey _303 |
||||
s0 s2 XCHG |
||||
8 PUSHPOW2 // price domdata lhk nhk expires_at ctl prices _303 gckey gc _304=256 |
||||
DICTUSETB // price domdata lhk nhk expires_at ctl prices gc |
||||
s4 s3 XCHG2 // price domdata lhk prices gc ctl nhk expires_at |
||||
MIN // price domdata lhk prices gc ctl _306 |
||||
s1 s5 XCHG |
||||
s3 s0 s4 XCHG3 |
||||
1 PUSHINT // price ctl domdata gc prices _306 lhk _307=1 |
||||
housekeeping CALLDICT |
||||
send_ok CALLDICT |
||||
}> // price key lhk exp qt ctl domdata gc prices nhk cat_table stdper n data |
||||
3 1 BLKDROP2 // price key lhk exp qt ctl domdata gc prices nhk data |
||||
s0 s6 XCHG // price key lhk exp data ctl domdata gc prices nhk qt |
||||
4 EQINT // price key lhk exp data ctl domdata gc prices nhk _311 |
||||
IFJMP:<{ // price key lhk exp data ctl domdata gc prices nhk |
||||
s0 s6 XCHG |
||||
NEWC // price key lhk nhk data ctl domdata gc prices exp _313 |
||||
32 STU // price key lhk nhk data ctl domdata gc prices _315 |
||||
s1 s5 XCHG // price key lhk nhk prices ctl domdata gc data _315 |
||||
STREF // price key lhk nhk prices ctl domdata gc _316 |
||||
s7 s2 XCHG2 |
||||
224 PUSHINT // price gc lhk nhk prices ctl _316 key domdata _319 |
||||
DICTUSETB // price gc lhk nhk prices ctl domdata |
||||
s5 s4 XCHG2 |
||||
s1 s3 XCHG |
||||
1 PUSHINT // price ctl domdata gc prices nhk lhk _321=1 |
||||
housekeeping CALLDICT |
||||
send_ok CALLDICT |
||||
}> // price key lhk exp data ctl domdata gc prices nhk |
||||
10 BLKDROP // |
||||
}> |
||||
recv_external PROC:<{ |
||||
// in_msg |
||||
DROP // |
||||
load_data INLINECALLDICT // _12 _13 _14 _15 _16 _17 |
||||
NIP // ctl dd gc prices lhk |
||||
IFNOTJMP:<{ // ctl dd gc prices |
||||
ACCEPT |
||||
32 PUSHPOW2DEC // ctl dd gc prices _9=4294967295 |
||||
NOW // ctl dd gc prices _9=4294967295 _10 |
||||
store_data CALLDICT |
||||
}> // ctl dd gc prices |
||||
4 BLKDROP // |
||||
}> |
||||
dnsdictlookup PROCREF:<{ |
||||
// domain nowtime |
||||
OVER // domain nowtime domain |
||||
SBITREFS // domain nowtime bits refs |
||||
OVER |
||||
7 PUSHINT // domain nowtime bits refs bits _6=7 |
||||
AND // domain nowtime bits refs _7 |
||||
OR // domain nowtime bits _8 |
||||
30 THROWIF |
||||
DUP // domain nowtime bits bits |
||||
IFNOT:<{ // domain nowtime bits |
||||
30 THROW |
||||
}> // domain nowtime bits |
||||
s2 PUSH |
||||
8 PUSHINT // domain nowtime bits domain _13=8 |
||||
SDCUTLAST // domain nowtime bits _14 |
||||
8 PLDU // domain nowtime bits domain_last_byte |
||||
IF:<{ // domain nowtime bits |
||||
0 PUSHINT // domain nowtime bits _17=0 |
||||
NEWC // domain nowtime bits _17=0 _18 |
||||
s0 s4 XCHG2 // _17=0 nowtime bits _18 domain |
||||
STSLICER // _17=0 nowtime bits _19 |
||||
s1 s3 XCHG // bits nowtime _17=0 _19 |
||||
8 STU // bits nowtime _21 |
||||
ENDC // bits nowtime _22 |
||||
CTOS // bits nowtime domain |
||||
s0 s2 XCHG // domain nowtime bits |
||||
8 ADDCONST // domain nowtime bits |
||||
}> // domain nowtime bits |
||||
DUP // domain nowtime bits bits |
||||
8 EQINT // domain nowtime bits _27 |
||||
IFJMP:<{ // domain nowtime bits |
||||
3 BLKDROP // |
||||
0 PUSHINT // _28=0 |
||||
PUSHNULL // _28=0 _29 |
||||
8 PUSHINT // _28=0 _29 _30=8 |
||||
PUSHNULL // _28=0 _29 _30=8 _31 |
||||
}> // domain nowtime bits |
||||
s2 PUSH // domain nowtime bits domain |
||||
8 PLDU // domain nowtime bits domain_first_byte |
||||
0 EQINT // domain nowtime bits _36 |
||||
IF:<{ // domain nowtime bits |
||||
s0 s2 XCHG // bits nowtime domain |
||||
8 LDU // bits nowtime _95 _94 |
||||
NIP // bits nowtime domain |
||||
s0 s2 XCHG // domain nowtime bits |
||||
-8 ADDCONST // domain nowtime bits |
||||
}> // domain nowtime bits |
||||
c4 PUSH // domain nowtime bits _43 |
||||
CTOS // domain nowtime bits ds |
||||
LDREF // domain nowtime bits _97 _96 |
||||
NIP // domain nowtime bits ds |
||||
LDDICT // domain nowtime bits _99 _98 |
||||
DROP // domain nowtime bits root |
||||
PUSHNULL // domain nowtime bits root val |
||||
-1 PUSHINT // domain nowtime bits root val tail_bits=-1 |
||||
s5 PUSH // domain nowtime bits root val tail_bits=-1 tail |
||||
s0 s4 XCHG // domain nowtime tail root val tail_bits=-1 bits |
||||
3 RSHIFT# // domain nowtime tail root val tail_bits=-1 _57 |
||||
REPEAT:<{ // domain nowtime tail root val tail_bits |
||||
s0 s3 XCHG // domain nowtime tail_bits root val tail |
||||
8 LDU // domain nowtime tail_bits root val _58 tail |
||||
SWAP // domain nowtime tail_bits root val tail _58 |
||||
0 EQINT // domain nowtime tail_bits root val tail _62 |
||||
IF:<{ // domain nowtime tail_bits root val tail |
||||
DUP // domain nowtime tail_bits root val tail tail |
||||
SBITS // domain nowtime tail_bits root val tail _64 |
||||
s6 s(-1) PUXC // domain nowtime tail_bits root val tail domain _64 |
||||
SDSKIPLAST // domain nowtime tail_bits root val tail _65 |
||||
SHA256U // domain nowtime tail_bits root val tail _66 |
||||
32 RSHIFT# // domain nowtime tail_bits root val tail key |
||||
s3 PUSH |
||||
224 PUSHINT // domain nowtime tail_bits root val tail key root _73 |
||||
DICTUGET |
||||
NULLSWAPIFNOT // domain nowtime tail_bits root val tail v found? |
||||
IF:<{ // domain nowtime tail_bits root val tail v |
||||
DUP // domain nowtime tail_bits root val tail v v |
||||
32 PLDU // domain nowtime tail_bits root val tail v _76 |
||||
s6 PUSH // domain nowtime tail_bits root val tail v _76 nowtime |
||||
GEQ // domain nowtime tail_bits root val tail v _77 |
||||
IF:<{ // domain nowtime tail_bits root val tail v |
||||
s2 POP |
||||
s3 POP // domain nowtime tail root val |
||||
s2 PUSH // domain nowtime tail root val tail |
||||
SBITS // domain nowtime tail root val tail_bits |
||||
s0 s3 XCHG // domain nowtime tail_bits root val tail |
||||
}>ELSE<{ |
||||
DROP // domain nowtime tail_bits root val tail |
||||
}> |
||||
}>ELSE<{ |
||||
DROP // domain nowtime tail_bits root val tail |
||||
}> |
||||
}> // domain nowtime tail_bits root val tail |
||||
s0 s3 XCHG // domain nowtime tail root val tail_bits |
||||
}> |
||||
2 2 BLKDROP2 |
||||
s2 POP // domain tail_bits val |
||||
DUP // domain tail_bits val val |
||||
ISNULL // domain tail_bits val _79 |
||||
IFJMP:<{ // domain tail_bits val |
||||
3 BLKDROP // |
||||
0 PUSHINT // _80=0 |
||||
PUSHNULL // _80=0 _81 |
||||
OVER // _80=0 _81 _82=0 |
||||
PUSHNULL // _80=0 _81 _82=0 _83 |
||||
}> // domain tail_bits val |
||||
32 LDU // domain tail_bits _84 val |
||||
LDREF // domain tail_bits _84 _107 _106 |
||||
DROP // domain tail_bits _84 _87 |
||||
s2 PUSH // domain tail_bits _84 _87 tail_bits |
||||
0 EQINT // domain tail_bits _84 _87 _90 |
||||
s4 s3 XCHG2 // _87 _90 _84 domain tail_bits |
||||
SDSKIPLAST // _87 _90 _84 _91 |
||||
s3 s3 s0 XCHG3 // _84 _87 _90 _91 |
||||
}> |
||||
dnsresolve PROC:<{ |
||||
// domain category |
||||
SWAP |
||||
NOW // category domain _6 |
||||
dnsdictlookup INLINECALLDICT // category exp cat_table exact? pfx |
||||
s0 s3 XCHG // category pfx cat_table exact? exp |
||||
IFNOTJMP:<{ // category pfx cat_table exact? |
||||
3 1 BLKDROP2 // exact? |
||||
PUSHNULL // exact? _8 |
||||
}> // category pfx cat_table exact? |
||||
IFNOT:<{ // category pfx cat_table |
||||
11732114750494247458678882651681748623800183221773167493832867265755123357695 PUSHINT |
||||
s3 POP // category=11732114750494247458678882651681748623800183221773167493832867265755123357695 pfx cat_table |
||||
}> // category pfx cat_table |
||||
SWAP // category cat_table pfx |
||||
SBITS // category cat_table pfx_bits |
||||
s2 PUSH // category cat_table pfx_bits category |
||||
IFJMP:<{ // category cat_table pfx_bits |
||||
-ROT |
||||
8 PUSHPOW2 // pfx_bits category cat_table _13=256 |
||||
DICTUGETOPTREF // pfx_bits cat_found |
||||
}> // category cat_table pfx_bits |
||||
s2 POP // pfx_bits cat_table |
||||
}> |
||||
getexpirationx PROCINLINE:<{ |
||||
// domain nowtime |
||||
dnsdictlookup INLINECALLDICT // _7 _8 _9 _10 |
||||
3 BLKDROP // exp |
||||
}> |
||||
getexpiration PROC:<{ |
||||
// domain |
||||
NOW // domain _1 |
||||
getexpirationx INLINECALLDICT // _2 |
||||
}> |
||||
getstdperiod PROC:<{ |
||||
// |
||||
load_prices INLINECALLDICT // _5 _6 _7 _8 |
||||
3 BLKDROP // stdper |
||||
}> |
||||
getppr PROC:<{ |
||||
// |
||||
load_prices INLINECALLDICT // _5 _6 _7 _8 |
||||
s2 s3 XCHG |
||||
3 BLKDROP // ppr |
||||
}> |
||||
getppc PROC:<{ |
||||
// |
||||
load_prices INLINECALLDICT // _5 _6 _7 _8 |
||||
s1 s3 XCHG |
||||
3 BLKDROP // ppc |
||||
}> |
||||
getppb PROC:<{ |
||||
// |
||||
load_prices INLINECALLDICT // _5 _6 _7 _8 |
||||
3 1 BLKDROP2 // ppb |
||||
}> |
||||
calcprice PROC:<{ |
||||
// domain val |
||||
load_prices INLINECALLDICT // domain val _8 _9 _10 _11 |
||||
2 2 BLKDROP2 // domain val ppc ppb |
||||
calcprice_internal INLINECALLDICT // _7 |
||||
}> |
||||
calcregprice PROC:<{ |
||||
// domain val |
||||
load_prices INLINECALLDICT // domain val _9 _10 _11 _12 |
||||
s3 POP // domain val ppb ppr ppc |
||||
s3 s4 XCHG |
||||
s4 s0 s4 XCHG3 // ppr domain val ppc ppb |
||||
calcprice_internal INLINECALLDICT // ppr _7 |
||||
ADD // _8 |
||||
}> |
||||
}END>c |
@ -0,0 +1,208 @@
|
||||
"Asm.fif" include |
||||
"Asm.fif" include |
||||
// automatically generated from `contracts/dns-utils.fc` incl:`contracts/stdlib.fc` |
||||
PROGRAM{ |
||||
DECLPROC zero_address |
||||
DECLPROC get_top_domain_bits |
||||
DECLPROC read_domain_from_comment |
||||
DECLPROC check_domain_string |
||||
DECLPROC get_min_price_config |
||||
DECLPROC get_min_price |
||||
zero_address PROC:<{ |
||||
// |
||||
0 PUSHINT // _0=0 |
||||
NEWC // _0=0 _1 |
||||
2 STU // _3 |
||||
ENDC // _4 |
||||
CTOS // _5 |
||||
}> |
||||
get_top_domain_bits PROC:<{ |
||||
// domain |
||||
0 PUSHINT // domain i=0 |
||||
UNTIL:<{ |
||||
SWAP // i domain |
||||
8 LDU // i char domain |
||||
SWAP // i domain char |
||||
0 EQINT // i domain need_break |
||||
DUP // i domain need_break need_break |
||||
NOT // i domain need_break _11 |
||||
IF:<{ // i domain need_break |
||||
s0 s2 XCHG // need_break domain i |
||||
8 ADDCONST // need_break domain i |
||||
s0 s2 XCHG // i domain need_break |
||||
}> // i domain need_break |
||||
s1 s2 XCHG // domain i need_break |
||||
}> // domain i |
||||
NIP // i |
||||
DUP // i i |
||||
0 EQINT // i _16 |
||||
201 THROWIF |
||||
}> |
||||
read_domain_from_comment PROC:<{ |
||||
// in_msg_body |
||||
NEWC // in_msg_body result |
||||
UNTIL:<{ |
||||
OVER // in_msg_body result in_msg_body |
||||
SBITS // in_msg_body result _6 |
||||
s1 s2 XCHG // result in_msg_body _6 |
||||
LDSLICEX // result _5 in_msg_body |
||||
-ROT // in_msg_body result _5 |
||||
STSLICER // in_msg_body result |
||||
OVER // in_msg_body result in_msg_body |
||||
SREFS // in_msg_body result refs_len |
||||
DUP // in_msg_body result refs_len refs_len |
||||
0 EQINT // in_msg_body result refs_len need_break |
||||
DUP // in_msg_body result refs_len need_break need_break |
||||
NOT // in_msg_body result refs_len need_break _13 |
||||
IF:<{ // in_msg_body result refs_len need_break |
||||
SWAP // in_msg_body result need_break refs_len |
||||
1 EQINT // in_msg_body result need_break _16 |
||||
202 THROWIFNOT |
||||
s0 s2 XCHG // need_break result in_msg_body |
||||
LDREF // need_break result _26 _25 |
||||
DROP // need_break result _18 |
||||
CTOS // need_break result in_msg_body |
||||
s0 s2 XCHG // in_msg_body result need_break |
||||
}>ELSE<{ |
||||
NIP // in_msg_body result need_break |
||||
}> |
||||
}> // in_msg_body result |
||||
NIP // result |
||||
ENDC // _21 |
||||
CTOS // _22 |
||||
}> |
||||
check_domain_string PROC:<{ |
||||
// domain |
||||
0 PUSHINT // domain i=0 |
||||
OVER // domain i=0 domain |
||||
SBITS // domain i=0 len |
||||
UNTIL:<{ |
||||
2DUP // domain i len i len |
||||
EQUAL // domain i len need_break |
||||
DUP // domain i len need_break need_break |
||||
NOT // domain i len need_break _8 |
||||
IF:<{ // domain i len need_break |
||||
DROP // domain i len |
||||
s0 s2 XCHG // len i domain |
||||
8 LDU // len i char domain |
||||
OVER // len i char domain char |
||||
45 EQINT // len i char domain is_hyphen |
||||
s3 PUSH // len i char domain is_hyphen i |
||||
0 GTINT // len i char domain is_hyphen _18 |
||||
AND // len i char domain _19 |
||||
s4 PUSH // len i char domain _19 len |
||||
-8 ADDCONST // len i char domain _19 _21 |
||||
s4 s(-1) PUXC // len i char domain _19 i _21 |
||||
LESS // len i char domain _19 _22 |
||||
AND // len i char domain _23 |
||||
s2 PUSH // len i char domain _23 char |
||||
47 GTINT // len i char domain _23 _25 |
||||
s3 PUSH // len i char domain _23 _25 char |
||||
58 LESSINT // len i char domain _23 _25 _27 |
||||
AND // len i char domain _23 _28 |
||||
OR // len i char domain _29 |
||||
s2 PUSH // len i char domain _29 char |
||||
96 GTINT // len i char domain _29 _31 |
||||
s0 s3 XCHG // len i _31 domain _29 char |
||||
123 LESSINT // len i _31 domain _29 _33 |
||||
s1 s3 XCHG // len i _29 domain _31 _33 |
||||
AND // len i _29 domain _34 |
||||
s1 s2 XCHG // len i domain _29 _34 |
||||
OR // len i domain valid_char |
||||
NOT // len i domain need_break |
||||
DUP // len i domain need_break need_break |
||||
NOT // len i domain need_break _37 |
||||
IF:<{ // len i domain need_break |
||||
s0 s2 XCHG // len need_break domain i |
||||
8 ADDCONST // len need_break domain i |
||||
s0 s2 XCHG // len i domain need_break |
||||
}> // len i domain need_break |
||||
s1 s3 XCHG // domain i len need_break |
||||
}> // domain i len need_break |
||||
}> // domain i len |
||||
1 2 BLKDROP2 // i len |
||||
EQUAL // _40 |
||||
}> |
||||
get_min_price_config PROC:<{ |
||||
// domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
4 EQINT // domain_char_count _2 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
1000 PUSHINT // _3=1000 |
||||
100 PUSHINT // _3=1000 _4=100 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
5 EQINT // domain_char_count _6 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
500 PUSHINT // _7=500 |
||||
50 PUSHINT // _7=500 _8=50 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
6 EQINT // domain_char_count _10 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
400 PUSHINT // _11=400 |
||||
40 PUSHINT // _11=400 _12=40 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
7 EQINT // domain_char_count _14 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
300 PUSHINT // _15=300 |
||||
30 PUSHINT // _15=300 _16=30 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
8 EQINT // domain_char_count _18 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
200 PUSHINT // _19=200 |
||||
20 PUSHINT // _19=200 _20=20 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
9 EQINT // domain_char_count _22 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
100 PUSHINT // _23=100 |
||||
10 PUSHINT // _23=100 _24=10 |
||||
}> // domain_char_count |
||||
10 EQINT // _26 |
||||
IFJMP:<{ // |
||||
50 PUSHINT // _27=50 |
||||
5 PUSHINT // _27=50 _28=5 |
||||
}> // |
||||
10 PUSHINT // _29=10 |
||||
1 PUSHINT // _29=10 _30=1 |
||||
}> |
||||
get_min_price PROC:<{ |
||||
// domain_bits_length now_time |
||||
SWAP // now_time domain_bits_length |
||||
3 RSHIFT# // now_time _5 |
||||
get_min_price_config CALLDICT // now_time start_min_price end_min_price |
||||
SWAP |
||||
1000000000 PUSHINT // now_time end_min_price start_min_price _7=1000000000 |
||||
MUL // now_time end_min_price start_min_price |
||||
SWAP |
||||
1000000000 PUSHINT // now_time start_min_price end_min_price _9=1000000000 |
||||
MUL // now_time start_min_price end_min_price |
||||
s0 s2 XCHG |
||||
1659171600 PUSHINT // end_min_price start_min_price now_time _12=1659171600 |
||||
SUB // end_min_price start_min_price seconds |
||||
2592000 PUSHINT // end_min_price start_min_price seconds _15=2592000 |
||||
DIV // end_min_price start_min_price months |
||||
DUP // end_min_price start_min_price months months |
||||
21 GTINT // end_min_price start_min_price months _18 |
||||
IFJMP:<{ // end_min_price start_min_price months |
||||
2DROP // end_min_price |
||||
}> // end_min_price start_min_price months |
||||
1 2 BLKDROP2 // start_min_price months |
||||
REPEAT:<{ // start_min_price |
||||
90 MULCONST // _20 |
||||
100 PUSHINT // _20 _21=100 |
||||
DIV // start_min_price |
||||
}> |
||||
}> |
||||
}END>c |
||||
|
||||
boc>B "build/dns-utils.cell" B>file |
@ -0,0 +1,205 @@
|
||||
"Asm.fif" include |
||||
// automatically generated from `contracts/dns-utils.fc` incl:`contracts/stdlib.fc` |
||||
PROGRAM{ |
||||
DECLPROC zero_address |
||||
DECLPROC get_top_domain_bits |
||||
DECLPROC read_domain_from_comment |
||||
DECLPROC check_domain_string |
||||
DECLPROC get_min_price_config |
||||
DECLPROC get_min_price |
||||
zero_address PROC:<{ |
||||
// |
||||
0 PUSHINT // _0=0 |
||||
NEWC // _0=0 _1 |
||||
2 STU // _3 |
||||
ENDC // _4 |
||||
CTOS // _5 |
||||
}> |
||||
get_top_domain_bits PROC:<{ |
||||
// domain |
||||
0 PUSHINT // domain i=0 |
||||
UNTIL:<{ |
||||
SWAP // i domain |
||||
8 LDU // i char domain |
||||
SWAP // i domain char |
||||
0 EQINT // i domain need_break |
||||
DUP // i domain need_break need_break |
||||
NOT // i domain need_break _11 |
||||
IF:<{ // i domain need_break |
||||
s0 s2 XCHG // need_break domain i |
||||
8 ADDCONST // need_break domain i |
||||
s0 s2 XCHG // i domain need_break |
||||
}> // i domain need_break |
||||
s1 s2 XCHG // domain i need_break |
||||
}> // domain i |
||||
NIP // i |
||||
DUP // i i |
||||
0 EQINT // i _16 |
||||
201 THROWIF |
||||
}> |
||||
read_domain_from_comment PROC:<{ |
||||
// in_msg_body |
||||
NEWC // in_msg_body result |
||||
UNTIL:<{ |
||||
OVER // in_msg_body result in_msg_body |
||||
SBITS // in_msg_body result _6 |
||||
s1 s2 XCHG // result in_msg_body _6 |
||||
LDSLICEX // result _5 in_msg_body |
||||
-ROT // in_msg_body result _5 |
||||
STSLICER // in_msg_body result |
||||
OVER // in_msg_body result in_msg_body |
||||
SREFS // in_msg_body result refs_len |
||||
DUP // in_msg_body result refs_len refs_len |
||||
0 EQINT // in_msg_body result refs_len need_break |
||||
DUP // in_msg_body result refs_len need_break need_break |
||||
NOT // in_msg_body result refs_len need_break _13 |
||||
IF:<{ // in_msg_body result refs_len need_break |
||||
SWAP // in_msg_body result need_break refs_len |
||||
1 EQINT // in_msg_body result need_break _16 |
||||
202 THROWIFNOT |
||||
s0 s2 XCHG // need_break result in_msg_body |
||||
LDREF // need_break result _26 _25 |
||||
DROP // need_break result _18 |
||||
CTOS // need_break result in_msg_body |
||||
s0 s2 XCHG // in_msg_body result need_break |
||||
}>ELSE<{ |
||||
NIP // in_msg_body result need_break |
||||
}> |
||||
}> // in_msg_body result |
||||
NIP // result |
||||
ENDC // _21 |
||||
CTOS // _22 |
||||
}> |
||||
check_domain_string PROC:<{ |
||||
// domain |
||||
0 PUSHINT // domain i=0 |
||||
OVER // domain i=0 domain |
||||
SBITS // domain i=0 len |
||||
UNTIL:<{ |
||||
2DUP // domain i len i len |
||||
EQUAL // domain i len need_break |
||||
DUP // domain i len need_break need_break |
||||
NOT // domain i len need_break _8 |
||||
IF:<{ // domain i len need_break |
||||
DROP // domain i len |
||||
s0 s2 XCHG // len i domain |
||||
8 LDU // len i char domain |
||||
OVER // len i char domain char |
||||
45 EQINT // len i char domain is_hyphen |
||||
s3 PUSH // len i char domain is_hyphen i |
||||
0 GTINT // len i char domain is_hyphen _18 |
||||
AND // len i char domain _19 |
||||
s4 PUSH // len i char domain _19 len |
||||
-8 ADDCONST // len i char domain _19 _21 |
||||
s4 s(-1) PUXC // len i char domain _19 i _21 |
||||
LESS // len i char domain _19 _22 |
||||
AND // len i char domain _23 |
||||
s2 PUSH // len i char domain _23 char |
||||
47 GTINT // len i char domain _23 _25 |
||||
s3 PUSH // len i char domain _23 _25 char |
||||
58 LESSINT // len i char domain _23 _25 _27 |
||||
AND // len i char domain _23 _28 |
||||
OR // len i char domain _29 |
||||
s2 PUSH // len i char domain _29 char |
||||
96 GTINT // len i char domain _29 _31 |
||||
s0 s3 XCHG // len i _31 domain _29 char |
||||
123 LESSINT // len i _31 domain _29 _33 |
||||
s1 s3 XCHG // len i _29 domain _31 _33 |
||||
AND // len i _29 domain _34 |
||||
s1 s2 XCHG // len i domain _29 _34 |
||||
OR // len i domain valid_char |
||||
NOT // len i domain need_break |
||||
DUP // len i domain need_break need_break |
||||
NOT // len i domain need_break _37 |
||||
IF:<{ // len i domain need_break |
||||
s0 s2 XCHG // len need_break domain i |
||||
8 ADDCONST // len need_break domain i |
||||
s0 s2 XCHG // len i domain need_break |
||||
}> // len i domain need_break |
||||
s1 s3 XCHG // domain i len need_break |
||||
}> // domain i len need_break |
||||
}> // domain i len |
||||
1 2 BLKDROP2 // i len |
||||
EQUAL // _40 |
||||
}> |
||||
get_min_price_config PROC:<{ |
||||
// domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
4 EQINT // domain_char_count _2 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
1000 PUSHINT // _3=1000 |
||||
100 PUSHINT // _3=1000 _4=100 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
5 EQINT // domain_char_count _6 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
500 PUSHINT // _7=500 |
||||
50 PUSHINT // _7=500 _8=50 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
6 EQINT // domain_char_count _10 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
400 PUSHINT // _11=400 |
||||
40 PUSHINT // _11=400 _12=40 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
7 EQINT // domain_char_count _14 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
300 PUSHINT // _15=300 |
||||
30 PUSHINT // _15=300 _16=30 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
8 EQINT // domain_char_count _18 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
200 PUSHINT // _19=200 |
||||
20 PUSHINT // _19=200 _20=20 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
9 EQINT // domain_char_count _22 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
100 PUSHINT // _23=100 |
||||
10 PUSHINT // _23=100 _24=10 |
||||
}> // domain_char_count |
||||
10 EQINT // _26 |
||||
IFJMP:<{ // |
||||
50 PUSHINT // _27=50 |
||||
5 PUSHINT // _27=50 _28=5 |
||||
}> // |
||||
10 PUSHINT // _29=10 |
||||
1 PUSHINT // _29=10 _30=1 |
||||
}> |
||||
get_min_price PROC:<{ |
||||
// domain_bits_length now_time |
||||
SWAP // now_time domain_bits_length |
||||
3 RSHIFT# // now_time _5 |
||||
get_min_price_config CALLDICT // now_time start_min_price end_min_price |
||||
SWAP |
||||
1000000000 PUSHINT // now_time end_min_price start_min_price _7=1000000000 |
||||
MUL // now_time end_min_price start_min_price |
||||
SWAP |
||||
1000000000 PUSHINT // now_time start_min_price end_min_price _9=1000000000 |
||||
MUL // now_time start_min_price end_min_price |
||||
s0 s2 XCHG |
||||
1659171600 PUSHINT // end_min_price start_min_price now_time _12=1659171600 |
||||
SUB // end_min_price start_min_price seconds |
||||
2592000 PUSHINT // end_min_price start_min_price seconds _15=2592000 |
||||
DIV // end_min_price start_min_price months |
||||
DUP // end_min_price start_min_price months months |
||||
21 GTINT // end_min_price start_min_price months _18 |
||||
IFJMP:<{ // end_min_price start_min_price months |
||||
2DROP // end_min_price |
||||
}> // end_min_price start_min_price months |
||||
1 2 BLKDROP2 // start_min_price months |
||||
REPEAT:<{ // start_min_price |
||||
90 MULCONST // _20 |
||||
100 PUSHINT // _20 _21=100 |
||||
DIV // start_min_price |
||||
}> |
||||
}> |
||||
}END>c |
@ -0,0 +1 @@
|
||||
{"hex":"b5ee9c72c102370100062800000d00120017001c00210093009f00a400b100bd00c200c700cc00de00e600f000f501020108010d0112015b016001700175017a018e01a801ad01bd01d801dd01e201e701ec02220230023502480253029f02a402ce02d302d802f402fd037c03fe048104f2050b058605d006280114ff00f4a413f4bcf2c80b0102016213020201200a030201200704020120060500dfb461843ae92f152118001e5c08de01ebe11a1a60e038001e5c339e8086045ae140f800047ae938010a421611c2460644180012660f003c003060fe81e60f003c0d842412a03a60e6203bc43e006a245ae3061f2030401752791961e030402cf47da87b19e2d920322f122e1c425400300013b64a5e01e2050be11a1002014809080015b016fc03d7c21ffc0084a00013b3f3fc03d7c0cd100d20020120100b0202740f0c0201200e0d001fa74661e01e20acbe0c65e020e003e023000ba6b3e01ed9030010a874f00f10385f0802012012110015b6739da89a1a863ae17ff00007b56ba6300202cb1f140201201615008ddb836b692e4660be5fffc14678b2802678b0afa00667a0009659fe4f80bb810f808c10821bee20464658fe4b8bbc00c646582a802678b387d0109e5b589e665806664c0207d8040201201817001bf381064658089fa007a00658064c0201201c190201201b1a00233c04a0804ce73b50f600723332fff27b5520002f01b2330572ffd400f3c58073c5853304f304bd0032cff2600201201e1d001b3e401d3232c084b281f2fff27420003108323304b2fffe0a33c5b25c083232c044fd003d0032c03260020120292002012028210201202522020120242300673b5134350c343534fffe900835d270802384fe90351fc0753d0134cfcc04120411d788c40d380c1b5c1b5b5b48c4160415c411a00017321400f3c5807e80b2cff26002012027260021081ba50c1b5c0838343e903e8034cfcc2000113e910c1c2ebcb8536000936483001258c2040fa201938083001658c20407d200cb8083001a58c204064200a38083001e58c20404b2007b8083002258c204032200538083002650c20191eb83002a4e00c9d781e9c60201202b2a004fd64471010eba4896b8c2ce78b10eba51060001059cd80e000f97065016a1868014898f17318e4e840201202f2c0201202e2d00331c27c074c1c07000082ce500a98200b784b98c4830003cb43260000d1c3232c072742002f5420c70094840ff2f0def8276f1021c70091709401d31f59e203d0d3030171b0925f05e0fa40fa4031fa003171d721fa0031fa0030f00f26b3e302534ac70517b08e3410bd5f0dfa40307020f8256d8040708010c8cb055007cf165005fa0215cb6a12cb1fcb3f226eb39458cf17019132e201c901fb00e020f00d8363001fef82301bc0ed33f246eb301111001b08e6a333453bea182103b9aca005210a15250bc993482103b9aca0014a1923003e220c2008e378210370fec516d72275134544643708010c8cb055007cf165005fa0215cb6a12cb1fcb3f226eb39458cf17019132e201c901fb001ba10a9130e25477645476546d520df0130592385be23102fe8210437dc40852d0ba925f0ee0821016c7d43552d0ba8e4410685f083233018308d718d3fff82801d4308201339ced43d8c827cf165003cf165230cbff5210ccc9f900fe005042f910f2e19d5340be313403f2e19e22f9005023f018e03d82101a039a5152c0ba9a175f076c42c705f2e191e082105fcc3d1452c0bae30236333200de363782101a0b9d515290ba8e1331375132c705f2e19a04d430415614f823f013e050795f0582102fcb26a214ba8e397082108b77173505c8cbff58cf161344408040708010c8cb055007cf165005fa0215cb6a12cb1fcb3f226eb39458cf17019132e201c901fb00e05f04840ff2f0012c3b5370c705f2e191108b105a1049487615103402db3c3401f03502fa4021f00cfa40d20031fa0082103b9aca001ea121945314a0a1de22d70b01c300209205a19135e220c2fff2e192218e3e821005138d91c8500acf16500ecf1671244a145448b0708010c8cb055007cf165005fa0215cb6a12cb1fcb3f226eb39458cf17019132e201c901fb00105a94102d385be2013500908e3529f00c8210d53276db103a450a6d71708010c8cb055007cf165005fa0215cb6a12cb1fcb3f226eb39458cf17019132e201c901fb0093393330e21056104510341023f823f01300ac5f0432333334355202c705f2e19502fa40d4306d70c8cb07f400c9f823821062e4f310a18208278d00a90420c20c9330800cde8208093a808208092c7058a8800ca904a1f82301a0f0024488f00e5e321034f823f0131160775b"} |
@ -0,0 +1 @@
|
||||
{"hex":"b5ee9c72c1022b010004b600000d00120017001c006d0072008a00a100a600c100c600da00e000e500ea010401090128012d013d01820187018c01a501aa0200024c02510256025b02d902df031e03600365036a039403b003b503be043b048804b60114ff00f4a413f4bcf2c80b010201620d0202012008030201200504009dba30c3020d74978a908c000f2e04620d70a07c00021d749c0085210b0935b786de0209501d3073101de21f0025122d71830f9018200ba93c8cb0f01820167a3ed43d8cf16c90191789170e212a001802012007060129b5347da89a1a9a9a9a7fff481a860206abe0bb67902a0029b60b7da89a1a9a9a9a7fff481a860be0affe0022500201200a090031ba7a3ed44d0d4d4d4d3fffa40d43010455f05f00f7001f01180201200c0b0023b4c7b91f0519e2c039e2c039e2d93a1f20300007b56ba6300202cb150e020148100f002fd38647c14678b2801e78b2801e78b6580e4e87c80acfc88402012012110039559f00f7021f011778018c8cb0558cf1670fa02cb6bccccc98040fb0080201201413001b3e401d3232c084b281f2fff274200085343500740075007435007400750c341c7232c1c933c58973c59633c5b272140133c58933c58073c5b24075007432140173c5940133c5b240f50c00b2333304b33332600201201b160201201817002df00e465fffc14678b64b81064658089fa007a00658064c0201481a1900a7200648f000e4cc20193788f00124cc200cb788f00164cc20067788f001a4cc20053788f001e4cc2003f788f002248c1eb780f082249d4cf79480ea1e9400e869c644a81eaa4120840ee6b2802a006a200caa41200093083001258c2040fa201938083001658c20407d200cb8083001a58c204064200a38083001e58c20404b2007b8083002258c204032200538083002650c20191eb83002a4e00c9d781e9c60020120221c020120211d020120201e01f50835d25c32086480ace39b88b000082ce3994134c1dc08b09008f056ec250c0069afe38d48b09808f05eec250c0069ae638988b08bc8f04eac250c0069812385c8b00b650c0c600fa740b017e4cc600fe53cb0410078b8b8b8b88129be083080251410b2c1669e14d02a4228514c33c07880a9819000c13780ba201f00086c31c9d000791c0875d272238b14c86e882ce3890c00f4c1c8700ec12982092ce5940972c1d411244cb888ecd4c8efac24fcb040f7941100f7b9b27400a844b5c60c20007f57021d7498e355cba20b38e2e3002d30721c02d23c200b024a6f85240b9b022c22f23c13ab0b122c26003c17b13b012b1b320b39402a60802de13dee66c12ba802012026230201202524004f3223880875d244b5c61673c58875d2883000082ce6c070007cb83280b50c3400a44c78b98c72742000331c27c074c1c07000082ce500a98200b784b98c4830003cb432600201202827000d1c3232c072742002f10831c0252103fcbc37807434c0c05c6c2497c0f80074c7fb513435353534fffe90350c0d49b00023b00c0d40fc00fc01948576cf05efbcb833097e40417e900c0930c02700fc01d518dcc1bc053cb833648cccf894903c0432140173c5b2721633c5b304f33244bc04f81b144860840dc3fb146ea497c138202a29009682102a0c8a2012ba8e3a01fa403021c705f2e19382102a0c8a2012706d71708010c8cb055007cf165005fa0215cb6a12cb1fcb3f226eb39458cf17019132e201c901fb00e05f03840ff2f0005821d74920c218f2e0c8208103f0bbf2e0c92078a908c000f2e0ca02f005f2e0cbd0d307d3033002ab0202f0091e3c893b"} |
@ -0,0 +1,845 @@
|
||||
"Asm.fif" include |
||||
// automatically generated from `contracts/nft-collection.fc` incl:`contracts/imports/dns-utils.fc` incl:`contracts/imports/stdlib.fc` incl:`contracts/imports/op-codes.fc` incl:`contracts/imports/params.fc` |
||||
PROGRAM{ |
||||
DECLPROC zero_address |
||||
DECLPROC get_top_domain_bits |
||||
DECLPROC read_comment |
||||
DECLPROC read_domain_from_comment |
||||
DECLPROC check_domain_string |
||||
DECLPROC split_by_semicolon |
||||
DECLPROC decode_asciicode |
||||
DECLPROC get_min_price_config |
||||
DECLPROC price_function |
||||
DECLPROC get_min_price |
||||
DECLPROC force_chain |
||||
DECLPROC load_data |
||||
DECLPROC save_data |
||||
DECLPROC calcprice |
||||
DECLPROC calculate_nft_item_state_init |
||||
DECLPROC get_attachment |
||||
DECLPROC calculate_nft_item_address |
||||
DECLPROC send_msg |
||||
DECLPROC deploy_nft_item |
||||
DECLPROC verify_signature |
||||
DECLPROC recv_internal |
||||
102491 DECLMETHOD get_collection_data |
||||
92067 DECLMETHOD get_nft_address_by_index |
||||
68445 DECLMETHOD get_nft_content |
||||
108963 DECLMETHOD get_price |
||||
75325 DECLMETHOD signature_data |
||||
123660 DECLMETHOD dnsresolve |
||||
zero_address PROC:<{ |
||||
// |
||||
0 PUSHINT // _0=0 |
||||
NEWC // _0=0 _1 |
||||
2 STU // _3 |
||||
ENDC // _4 |
||||
CTOS // _5 |
||||
}> |
||||
get_top_domain_bits PROC:<{ |
||||
// domain |
||||
0 PUSHINT // domain i=0 |
||||
UNTIL:<{ |
||||
SWAP // i domain |
||||
8 LDU // i char domain |
||||
SWAP // i domain char |
||||
0 EQINT // i domain need_break |
||||
DUP // i domain need_break need_break |
||||
NOT // i domain need_break _11 |
||||
IF:<{ // i domain need_break |
||||
s0 s2 XCHG // need_break domain i |
||||
8 ADDCONST // need_break domain i |
||||
s0 s2 XCHG // i domain need_break |
||||
}> // i domain need_break |
||||
s1 s2 XCHG // domain i need_break |
||||
}> // domain i |
||||
NIP // i |
||||
DUP // i i |
||||
0 EQINT // i _16 |
||||
201 THROWIF |
||||
}> |
||||
read_comment PROC:<{ |
||||
// in_msg_body |
||||
NEWC // in_msg_body result |
||||
UNTIL:<{ |
||||
OVER // in_msg_body result in_msg_body |
||||
SBITS // in_msg_body result _6 |
||||
s1 s2 XCHG // result in_msg_body _6 |
||||
LDSLICEX // result _5 in_msg_body |
||||
-ROT // in_msg_body result _5 |
||||
STSLICER // in_msg_body result |
||||
OVER // in_msg_body result in_msg_body |
||||
SREFS // in_msg_body result refs_len |
||||
DUP // in_msg_body result refs_len refs_len |
||||
0 EQINT // in_msg_body result refs_len need_break |
||||
DUP // in_msg_body result refs_len need_break need_break |
||||
NOT // in_msg_body result refs_len need_break _13 |
||||
IF:<{ // in_msg_body result refs_len need_break |
||||
SWAP // in_msg_body result need_break refs_len |
||||
1 EQINT // in_msg_body result need_break _16 |
||||
202 THROWIFNOT |
||||
s0 s2 XCHG // need_break result in_msg_body |
||||
LDREF // need_break result _26 _25 |
||||
DROP // need_break result _18 |
||||
CTOS // need_break result in_msg_body |
||||
s0 s2 XCHG // in_msg_body result need_break |
||||
}>ELSE<{ |
||||
NIP // in_msg_body result need_break |
||||
}> |
||||
}> // in_msg_body result |
||||
NIP // result |
||||
ENDC // _21 |
||||
CTOS // _22 |
||||
}> |
||||
read_domain_from_comment PROC:<{ |
||||
// in_msg_body |
||||
read_comment CALLDICT // _1 |
||||
}> |
||||
check_domain_string PROC:<{ |
||||
// domain |
||||
0 PUSHINT // domain i=0 |
||||
OVER // domain i=0 domain |
||||
SBITS // domain i=0 len |
||||
UNTIL:<{ |
||||
2DUP // domain i len i len |
||||
EQUAL // domain i len need_break |
||||
DUP // domain i len need_break need_break |
||||
NOT // domain i len need_break _8 |
||||
IF:<{ // domain i len need_break |
||||
DROP // domain i len |
||||
s0 s2 XCHG // len i domain |
||||
8 LDU // len i char domain |
||||
OVER // len i char domain char |
||||
45 EQINT // len i char domain is_hyphen |
||||
s3 PUSH // len i char domain is_hyphen i |
||||
0 GTINT // len i char domain is_hyphen _18 |
||||
AND // len i char domain _19 |
||||
s4 PUSH // len i char domain _19 len |
||||
-8 ADDCONST // len i char domain _19 _21 |
||||
s4 s(-1) PUXC // len i char domain _19 i _21 |
||||
LESS // len i char domain _19 _22 |
||||
AND // len i char domain _23 |
||||
s2 PUSH // len i char domain _23 char |
||||
47 GTINT // len i char domain _23 _25 |
||||
s3 PUSH // len i char domain _23 _25 char |
||||
58 LESSINT // len i char domain _23 _25 _27 |
||||
AND // len i char domain _23 _28 |
||||
OR // len i char domain _29 |
||||
s2 PUSH // len i char domain _29 char |
||||
96 GTINT // len i char domain _29 _31 |
||||
s0 s3 XCHG // len i _31 domain _29 char |
||||
123 LESSINT // len i _31 domain _29 _33 |
||||
s1 s3 XCHG // len i _29 domain _31 _33 |
||||
AND // len i _29 domain _34 |
||||
s1 s2 XCHG // len i domain _29 _34 |
||||
OR // len i domain valid_char |
||||
NOT // len i domain need_break |
||||
DUP // len i domain need_break need_break |
||||
NOT // len i domain need_break _37 |
||||
IF:<{ // len i domain need_break |
||||
s0 s2 XCHG // len need_break domain i |
||||
8 ADDCONST // len need_break domain i |
||||
s0 s2 XCHG // len i domain need_break |
||||
}> // len i domain need_break |
||||
s1 s3 XCHG // domain i len need_break |
||||
}> // domain i len need_break |
||||
}> // domain i len |
||||
1 2 BLKDROP2 // i len |
||||
EQUAL // _40 |
||||
}> |
||||
split_by_semicolon PROC:<{ |
||||
// str |
||||
0 PUSHINT // str i=0 |
||||
OVER // str i=0 str |
||||
SBITS // str i=0 len |
||||
NEWC // str i=0 len result1 |
||||
UNTIL:<{ |
||||
s2 s1 PUSH2 // str i len result1 i len |
||||
EQUAL // str i len result1 need_break |
||||
DUP // str i len result1 need_break need_break |
||||
NOT // str i len result1 need_break _10 |
||||
IF:<{ // str i len result1 need_break |
||||
DROP // str i len result1 |
||||
s0 s3 XCHG // result1 i len str |
||||
8 LDU // result1 i len char str |
||||
OVER // result1 i len char str char |
||||
59 EQINT // result1 i len char str need_break |
||||
s0 s4 XCHG // result1 need_break len char str i |
||||
8 ADDCONST // result1 need_break len char str i |
||||
s4 PUSH // result1 need_break len char str i need_break |
||||
NOT // result1 need_break len char str i _19 |
||||
IF:<{ // result1 need_break len char str i |
||||
s2 s5 XCHG2 // i need_break len str char result1 |
||||
8 STU // i need_break len str result1 |
||||
s4 s4 XCHG2 // result1 need_break len i str |
||||
}>ELSE<{ |
||||
s2 POP // result1 need_break len i str |
||||
}> |
||||
s3 PUSH // result1 need_break len i str need_break |
||||
NOT // result1 need_break len i str _23 |
||||
s2 s3 PUSH2 // result1 need_break len i str _23 i len |
||||
GEQ // result1 need_break len i str _23 _24 |
||||
AND // result1 need_break len i str _25 |
||||
IF:<{ // result1 need_break len i str |
||||
259 THROW |
||||
}> // result1 need_break len i str |
||||
s4 s4 XCHG2 |
||||
s0 s3 XCHG // str i len result1 need_break |
||||
}> // str i len result1 need_break |
||||
}> // str i len result1 |
||||
ENDC // str i len _28 |
||||
CTOS // str i len _29 |
||||
s0 s2 XCHG // str _29 len i |
||||
SUB // str _29 _31 |
||||
s1 s2 XCHG // _29 str _31 |
||||
LDSLICEX // _29 _36 _35 |
||||
DROP // _29 _30 |
||||
}> |
||||
decode_asciicode PROC:<{ |
||||
// str |
||||
DUP // str str |
||||
SBITS // str len |
||||
0 PUSHINT // str len need_break=0 |
||||
NEWC // str len need_break=0 result |
||||
OVER // str len need_break=0 result res_len=0 |
||||
WHILE:<{ |
||||
s0 s2 XCHG // str len res_len result need_break |
||||
NOT // str len res_len result _9 |
||||
}>DO<{ // str len res_len result |
||||
s2 PUSH // str len res_len result len |
||||
0 EQINT // str len res_len result need_break |
||||
DUP // str len res_len result need_break need_break |
||||
NOT // str len res_len result need_break _12 |
||||
IF:<{ // str len res_len result need_break |
||||
s0 s4 XCHG // need_break len res_len result str |
||||
8 LDU // need_break len res_len result char str |
||||
0 PUSHINT // need_break len res_len result char str byte=0 |
||||
s2 PUSH // need_break len res_len result char str byte=0 char |
||||
64 GTINT // need_break len res_len result char str byte=0 _20 |
||||
s3 PUSH // need_break len res_len result char str byte=0 _20 char |
||||
91 LESSINT // need_break len res_len result char str byte=0 _20 _22 |
||||
AND // need_break len res_len result char str byte=0 _23 |
||||
IF:<{ // need_break len res_len result char str byte=0 |
||||
DROP // need_break len res_len result char str |
||||
SWAP // need_break len res_len result str char |
||||
-65 ADDCONST // need_break len res_len result str byte |
||||
}>ELSE<{ // need_break len res_len result char str byte=0 |
||||
s2 PUSH // need_break len res_len result char str byte=0 char |
||||
96 GTINT // need_break len res_len result char str byte=0 _27 |
||||
s3 PUSH // need_break len res_len result char str byte=0 _27 char |
||||
123 LESSINT // need_break len res_len result char str byte=0 _27 _29 |
||||
AND // need_break len res_len result char str byte=0 _30 |
||||
IF:<{ // need_break len res_len result char str byte=0 |
||||
DROP // need_break len res_len result char str |
||||
SWAP // need_break len res_len result str char |
||||
-71 ADDCONST // need_break len res_len result str byte |
||||
}>ELSE<{ // need_break len res_len result char str byte=0 |
||||
s2 PUSH // need_break len res_len result char str byte=0 char |
||||
47 GTINT // need_break len res_len result char str byte=0 _34 |
||||
s3 PUSH // need_break len res_len result char str byte=0 _34 char |
||||
58 LESSINT // need_break len res_len result char str byte=0 _34 _36 |
||||
AND // need_break len res_len result char str byte=0 _37 |
||||
IF:<{ // need_break len res_len result char str byte=0 |
||||
DROP // need_break len res_len result char str |
||||
SWAP // need_break len res_len result str char |
||||
4 ADDCONST // need_break len res_len result str byte |
||||
}>ELSE<{ // need_break len res_len result char str byte=0 |
||||
s2 PUSH // need_break len res_len result char str byte=0 char |
||||
45 EQINT // need_break len res_len result char str byte=0 _41 |
||||
IF:<{ // need_break len res_len result char str byte=0 |
||||
DROP |
||||
NIP // need_break len res_len result str |
||||
62 PUSHINT // need_break len res_len result str byte=62 |
||||
}>ELSE<{ // need_break len res_len result char str byte=0 |
||||
s0 s2 XCHG // need_break len res_len result byte=0 str char |
||||
95 EQINT // need_break len res_len result byte=0 str _44 |
||||
IF:<{ // need_break len res_len result byte=0 str |
||||
NIP // need_break len res_len result str |
||||
63 PUSHINT // need_break len res_len result str byte=63 |
||||
}>ELSE<{ // need_break len res_len result byte=0 str |
||||
260 THROW |
||||
SWAP // need_break len res_len result str byte |
||||
}> |
||||
}> |
||||
}> |
||||
}> |
||||
}> |
||||
s0 s4 XCHG // need_break byte res_len result str len |
||||
-8 ADDCONST // need_break byte res_len result str len |
||||
DUP // need_break byte res_len result str len len |
||||
0 GTINT // need_break byte res_len result str len _51 |
||||
IF:<{ // need_break byte res_len result str len |
||||
s4 s2 XCHG2 // need_break str res_len len byte result |
||||
6 STU // need_break str res_len len result |
||||
}>ELSE<{ // need_break byte res_len result str len |
||||
8 PUSHINT // need_break byte res_len result str len _56=8 |
||||
s4 s0 PUSH2 // need_break byte res_len result str len _56=8 res_len _57=8 |
||||
MOD // need_break byte res_len result str len _56=8 _58 |
||||
SUB // need_break byte res_len result str len _59 |
||||
s5 s3 s0 XCHG3 // need_break str res_len len byte result _59 |
||||
STUX // need_break str res_len len result |
||||
}> |
||||
s0 s2 XCHG // need_break str result len res_len |
||||
6 ADDCONST // need_break str result len res_len |
||||
s0 s0 s3 XCHG3 |
||||
s0 s4 XCHG // str len res_len result need_break |
||||
}> // str len res_len result need_break |
||||
s0 s2 XCHG // str len need_break result res_len |
||||
}> // str len res_len result |
||||
3 1 BLKDROP2 // result |
||||
ENDC // _63 |
||||
CTOS // _64 |
||||
}> |
||||
get_min_price_config PROC:<{ |
||||
// domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
4 EQINT // domain_char_count _2 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
1000 PUSHINT // _3=1000 |
||||
100 PUSHINT // _3=1000 _4=100 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
5 EQINT // domain_char_count _6 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
500 PUSHINT // _7=500 |
||||
50 PUSHINT // _7=500 _8=50 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
6 EQINT // domain_char_count _10 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
400 PUSHINT // _11=400 |
||||
40 PUSHINT // _11=400 _12=40 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
7 EQINT // domain_char_count _14 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
300 PUSHINT // _15=300 |
||||
30 PUSHINT // _15=300 _16=30 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
8 EQINT // domain_char_count _18 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
200 PUSHINT // _19=200 |
||||
20 PUSHINT // _19=200 _20=20 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
9 EQINT // domain_char_count _22 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
100 PUSHINT // _23=100 |
||||
10 PUSHINT // _23=100 _24=10 |
||||
}> // domain_char_count |
||||
10 EQINT // _26 |
||||
IFJMP:<{ // |
||||
50 PUSHINT // _27=50 |
||||
5 PUSHINT // _27=50 _28=5 |
||||
}> // |
||||
10 PUSHINT // _29=10 |
||||
1 PUSHINT // _29=10 _30=1 |
||||
}> |
||||
price_function PROC:<{ |
||||
// length multiplierx50 steepness |
||||
25 PUSHINT // length multiplierx50 steepness price=25 |
||||
s3 PUSH // length multiplierx50 steepness price=25 length |
||||
3 EQINT // length multiplierx50 steepness price=25 _6 |
||||
IF:<{ // length multiplierx50 steepness price=25 |
||||
DROP // length multiplierx50 steepness |
||||
100 PUSHINT // length multiplierx50 steepness price=100 |
||||
}> // length multiplierx50 steepness price |
||||
s3 PUSH // length multiplierx50 steepness price length |
||||
4 EQINT // length multiplierx50 steepness price _9 |
||||
IF:<{ // length multiplierx50 steepness price |
||||
DROP // length multiplierx50 steepness |
||||
50 PUSHINT // length multiplierx50 steepness price=50 |
||||
}> // length multiplierx50 steepness price |
||||
s3 PUSH // length multiplierx50 steepness price length |
||||
5 EQINT // length multiplierx50 steepness price _12 |
||||
IF:<{ // length multiplierx50 steepness price |
||||
DROP // length multiplierx50 steepness |
||||
25 PUSHINT // length multiplierx50 steepness price=25 |
||||
}> // length multiplierx50 steepness price |
||||
s3 PUSH // length multiplierx50 steepness price length |
||||
6 EQINT // length multiplierx50 steepness price _15 |
||||
IF:<{ // length multiplierx50 steepness price |
||||
DROP // length multiplierx50 steepness |
||||
20 PUSHINT // length multiplierx50 steepness price=20 |
||||
}> // length multiplierx50 steepness price |
||||
s3 PUSH // length multiplierx50 steepness price length |
||||
7 EQINT // length multiplierx50 steepness price _18 |
||||
IF:<{ // length multiplierx50 steepness price |
||||
DROP // length multiplierx50 steepness |
||||
15 PUSHINT // length multiplierx50 steepness price=15 |
||||
}> // length multiplierx50 steepness price |
||||
s3 PUSH // length multiplierx50 steepness price length |
||||
8 EQINT // length multiplierx50 steepness price _21 |
||||
IF:<{ // length multiplierx50 steepness price |
||||
DROP // length multiplierx50 steepness |
||||
10 PUSHINT // length multiplierx50 steepness price=10 |
||||
}> // length multiplierx50 steepness price |
||||
s0 s3 XCHG // price multiplierx50 steepness length |
||||
8 GTINT // price multiplierx50 steepness _24 |
||||
IF:<{ // price multiplierx50 steepness |
||||
5 PUSHINT |
||||
s3 POP // price=5 multiplierx50 steepness |
||||
}> // price multiplierx50 steepness |
||||
s0 s2 PUXC // steepness multiplierx50 steepness price |
||||
MUL // steepness multiplierx50 _26 |
||||
10 PUSHINT // steepness multiplierx50 _26 _27=10 |
||||
s0 s3 XCHG2 // _26 multiplierx50 _27=10 steepness |
||||
SUB // _26 multiplierx50 _28 |
||||
25 MULCONST // _26 multiplierx50 _30 |
||||
s1 s2 XCHG // multiplierx50 _26 _30 |
||||
ADD // multiplierx50 _31 |
||||
10 PUSHINT // multiplierx50 _31 _32=10 |
||||
DIV // multiplierx50 price |
||||
1000000000 PUSHINT // multiplierx50 price _34=1000000000 |
||||
MUL // multiplierx50 _35 |
||||
SWAP // _35 multiplierx50 |
||||
MUL // _36 |
||||
50 PUSHINT // _36 _37=50 |
||||
DIV // _38 |
||||
}> |
||||
get_min_price PROC:<{ |
||||
// domain_bits_length now_time |
||||
SWAP // now_time domain_bits_length |
||||
3 RSHIFT# // now_time _5 |
||||
get_min_price_config CALLDICT // now_time start_min_price end_min_price |
||||
SWAP |
||||
1000000000 PUSHINT // now_time end_min_price start_min_price _7=1000000000 |
||||
MUL // now_time end_min_price start_min_price |
||||
SWAP |
||||
1000000000 PUSHINT // now_time start_min_price end_min_price _9=1000000000 |
||||
MUL // now_time start_min_price end_min_price |
||||
s0 s2 XCHG |
||||
1659171600 PUSHINT // end_min_price start_min_price now_time _12=1659171600 |
||||
SUB // end_min_price start_min_price seconds |
||||
2592000 PUSHINT // end_min_price start_min_price seconds _15=2592000 |
||||
DIV // end_min_price start_min_price months |
||||
DUP // end_min_price start_min_price months months |
||||
21 GTINT // end_min_price start_min_price months _18 |
||||
IFJMP:<{ // end_min_price start_min_price months |
||||
2DROP // end_min_price |
||||
}> // end_min_price start_min_price months |
||||
1 2 BLKDROP2 // start_min_price months |
||||
REPEAT:<{ // start_min_price |
||||
90 MULCONST // _20 |
||||
100 PUSHINT // _20 _21=100 |
||||
DIV // start_min_price |
||||
}> |
||||
}> |
||||
force_chain PROC:<{ |
||||
// addr |
||||
REWRITESTDADDR // _8 _9 |
||||
DROP // wc |
||||
0 PUSHINT // wc _5 |
||||
EQUAL // _6 |
||||
333 THROWIFNOT |
||||
}> |
||||
load_data PROCINLINE:<{ |
||||
// |
||||
c4 PUSH // _1 |
||||
CTOS // ds |
||||
LDREF // _3 ds |
||||
LDREF // _3 _5 ds |
||||
LDREF // _3 _5 _7 ds |
||||
256 LDU // _3 _5 _7 _9 ds |
||||
LDMSGADDR // _3 _5 _7 _9 _12 ds |
||||
LDREF // _3 _5 _7 _9 _12 _27 _26 |
||||
DROP // _3 _5 _7 _9 _12 _14 |
||||
}> |
||||
save_data PROCINLINE:<{ |
||||
// content nft_item_code pricing owner_key owner_addr data_scheme |
||||
s0 s5 XCHG |
||||
NEWC // data_scheme nft_item_code pricing owner_key owner_addr content _6 |
||||
STREF // data_scheme nft_item_code pricing owner_key owner_addr _7 |
||||
s1 s4 XCHG // data_scheme owner_addr pricing owner_key nft_item_code _7 |
||||
STREF // data_scheme owner_addr pricing owner_key _8 |
||||
s1 s2 XCHG // data_scheme owner_addr owner_key pricing _8 |
||||
STREF // data_scheme owner_addr owner_key _9 |
||||
256 STU // data_scheme owner_addr _11 |
||||
SWAP // data_scheme _11 owner_addr |
||||
STSLICER // data_scheme _12 |
||||
STREF // _13 |
||||
ENDC // _14 |
||||
c4 POP |
||||
}> |
||||
calcprice PROCREF:<{ |
||||
// domain pricing |
||||
OVER // domain pricing domain |
||||
SBITS // domain pricing len |
||||
DUP // domain pricing len len |
||||
24 GTINT // domain pricing len _8 |
||||
200 THROWIFNOT |
||||
DUP |
||||
1008 PUSHINT // domain pricing len len _13 |
||||
LEQ // domain pricing len _14 |
||||
201 THROWIFNOT |
||||
DUP |
||||
8 PUSHINT // domain pricing len len _17=8 |
||||
MOD // domain pricing len _18 |
||||
0 EQINT // domain pricing len _20 |
||||
202 THROWIFNOT |
||||
s0 s2 XCHG // len pricing domain |
||||
check_domain_string CALLDICT // len pricing _23 |
||||
203 THROWIFNOT |
||||
CTOS // len pr |
||||
8 LDU // len multiplier pr |
||||
4 LDU // len multiplier _41 _40 |
||||
DROP // len multiplier steepness |
||||
s0 s2 XCHG // steepness multiplier len |
||||
3 RSHIFT# // steepness multiplier _36 |
||||
s0 s2 XCHG // _36 multiplier steepness |
||||
price_function CALLDICT // _37 |
||||
}> |
||||
calculate_nft_item_state_init PROC:<{ |
||||
// item_index nft_item_code |
||||
SWAP |
||||
NEWC // nft_item_code item_index _3 |
||||
256 STU // nft_item_code _5 |
||||
MYADDR // nft_item_code _5 _6 |
||||
STSLICER // nft_item_code _7 |
||||
ENDC // nft_item_code data |
||||
0 PUSHINT // nft_item_code data _9=0 |
||||
DUP // nft_item_code data _9=0 _10=0 |
||||
NEWC // nft_item_code data _9=0 _10=0 _11 |
||||
2 STU // nft_item_code data _9=0 _13 |
||||
s1 s3 XCHG // _9=0 data nft_item_code _13 |
||||
STDICT // _9=0 data _14 |
||||
STDICT // _9=0 _15 |
||||
1 STU // _17 |
||||
ENDC // _18 |
||||
}> |
||||
get_attachment PROC:<{ |
||||
// domain data_scheme |
||||
CTOS // domain cs |
||||
LDREF // domain _5 cs |
||||
SWAP // domain cs _5 |
||||
CTOS // domain cs prefix |
||||
SWAP // domain prefix cs |
||||
LDREF // domain prefix _9 cs |
||||
SWAP // domain prefix cs _9 |
||||
CTOS // domain prefix cs postfixes |
||||
LDREF // domain prefix cs _13 postfixes |
||||
SWAP // domain prefix cs postfixes _13 |
||||
CTOS // domain prefix cs postfixes postfix |
||||
SWAP // domain prefix cs postfix postfixes |
||||
LDREF // domain prefix cs postfix _61 _60 |
||||
DROP // domain prefix cs postfix _17 |
||||
CTOS // domain prefix cs postfix image_postfix |
||||
1 PUSHINT // domain prefix cs postfix image_postfix _21=1 |
||||
NEWC // domain prefix cs postfix image_postfix _21=1 _22 |
||||
8 STU // domain prefix cs postfix image_postfix _24 |
||||
s4 PUSH // domain prefix cs postfix image_postfix _24 prefix |
||||
STSLICER // domain prefix cs postfix image_postfix _25 |
||||
s5 PUSH // domain prefix cs postfix image_postfix _25 domain |
||||
STSLICER // domain prefix cs postfix image_postfix _26 |
||||
ROT // domain prefix cs image_postfix _26 postfix |
||||
STSLICER // domain prefix cs image_postfix _27 |
||||
ENDC // domain prefix cs image_postfix uri_cell |
||||
NEWC // domain prefix cs image_postfix uri_cell _30 |
||||
s0 s4 XCHG2 // domain uri_cell cs image_postfix _30 prefix |
||||
STSLICER // domain uri_cell cs image_postfix _31 |
||||
s4 PUSH // domain uri_cell cs image_postfix _31 domain |
||||
STSLICER // domain uri_cell cs image_postfix _32 |
||||
SWAP // domain uri_cell cs _32 image_postfix |
||||
STSLICER // domain uri_cell cs _33 |
||||
ENDC // domain uri_cell cs image_uri_cell |
||||
SWAP // domain uri_cell image_uri_cell cs |
||||
LDREF // domain uri_cell image_uri_cell _36 cs |
||||
SWAP // domain uri_cell image_uri_cell cs _36 |
||||
CTOS // domain uri_cell image_uri_cell cs zone |
||||
NEWC // domain uri_cell image_uri_cell cs zone _40 |
||||
s0 s5 XCHG2 // zone uri_cell image_uri_cell cs _40 domain |
||||
STSLICER // zone uri_cell image_uri_cell cs _41 |
||||
s0 s4 XCHG2 // cs uri_cell image_uri_cell _41 zone |
||||
STSLICER // cs uri_cell image_uri_cell _42 |
||||
ENDC // cs uri_cell image_uri_cell name_cell |
||||
s0 s3 XCHG // name_cell uri_cell image_uri_cell cs |
||||
LDREF // name_cell uri_cell image_uri_cell _65 _64 |
||||
DROP // name_cell uri_cell image_uri_cell desc_cell |
||||
s0 s2 XCHG |
||||
NEWC // name_cell desc_cell image_uri_cell uri_cell _48 |
||||
STREF // name_cell desc_cell image_uri_cell _49 |
||||
STREF // name_cell desc_cell _50 |
||||
s1 s2 XCHG // desc_cell name_cell _50 |
||||
STREF // desc_cell _51 |
||||
STREF // _52 |
||||
ENDC // full_cell |
||||
}> |
||||
calculate_nft_item_address PROC:<{ |
||||
// wc state_init |
||||
HASHCU // wc _2 |
||||
4 PUSHINT // wc _2 _3=4 |
||||
NEWC // wc _2 _3=4 _4 |
||||
3 STU // wc _2 _6 |
||||
s1 s2 XCHG // _2 wc _6 |
||||
8 STI // _2 _8 |
||||
256 STU // _10 |
||||
ENDC // _11 |
||||
CTOS // _12 |
||||
}> |
||||
send_msg PROCINLINE:<{ |
||||
// to_address amount op query_id payload send_mode |
||||
0 PUSHINT // to_address amount op query_id payload send_mode _7=0 |
||||
16 PUSHINT // to_address amount op query_id payload send_mode _7=0 _8=16 |
||||
NEWC // to_address amount op query_id payload send_mode _7=0 _8=16 _9 |
||||
6 STU // to_address amount op query_id payload send_mode _7=0 _11 |
||||
s0 s7 XCHG2 // _7=0 amount op query_id payload send_mode _11 to_address |
||||
STSLICER // _7=0 amount op query_id payload send_mode _12 |
||||
s0 s5 XCHG2 // _7=0 send_mode op query_id payload _12 amount |
||||
STVARUINT16 // _7=0 send_mode op query_id payload _13 |
||||
s1 s5 XCHG // payload send_mode op query_id _7=0 _13 |
||||
107 STU // payload send_mode op query_id _27 |
||||
s1 s2 XCHG // payload send_mode query_id op _27 |
||||
32 STU // payload send_mode query_id _29 |
||||
64 STU // payload send_mode msg |
||||
s2 PUSH // payload send_mode msg payload |
||||
ISNULL // payload send_mode msg _32 |
||||
NOT // payload send_mode msg _33 |
||||
IF:<{ // payload send_mode msg |
||||
ROT // send_mode msg payload |
||||
STBR // send_mode msg |
||||
SWAP // msg send_mode |
||||
}>ELSE<{ |
||||
s2 POP // msg send_mode |
||||
}> |
||||
SWAP // send_mode msg |
||||
ENDC // send_mode _35 |
||||
SWAP // _35 send_mode |
||||
SENDRAWMSG |
||||
}> |
||||
deploy_nft_item PROC:<{ |
||||
// item_index nft_item_code nft_payload |
||||
-ROT // nft_payload item_index nft_item_code |
||||
calculate_nft_item_state_init CALLDICT // nft_payload state_init |
||||
0 PUSHINT // nft_payload state_init _6 |
||||
OVER // nft_payload state_init _6 state_init |
||||
calculate_nft_item_address CALLDICT // nft_payload state_init nft_address |
||||
7 PUSHINT // nft_payload state_init nft_address _13 |
||||
24 PUSHINT // nft_payload state_init nft_address _13 _14=24 |
||||
NEWC // nft_payload state_init nft_address _13 _14=24 _15 |
||||
6 STU // nft_payload state_init nft_address _13 _17 |
||||
ROT // nft_payload state_init _13 _17 nft_address |
||||
STSLICER // nft_payload state_init _13 _18 |
||||
0 PUSHINT // nft_payload state_init _13 _18 _19=0 |
||||
STVARUINT16 // nft_payload state_init _13 _20 |
||||
108 STU // nft_payload state_init _36 |
||||
STREF // nft_payload _37 |
||||
STREF // msg |
||||
ENDC // _39 |
||||
64 PUSHINT // _39 _40=64 |
||||
SENDRAWMSG |
||||
}> |
||||
verify_signature PROC:<{ |
||||
// signature sender_address domain owner_key |
||||
0 PUSHINT // signature sender_address domain owner_key _5=0 |
||||
NEWC // signature sender_address domain owner_key _5=0 _6 |
||||
MYADDR // signature sender_address domain owner_key _5=0 _6 _7 |
||||
STSLICER // signature sender_address domain owner_key _5=0 _8 |
||||
s0 s3 XCHG2 // signature sender_address _5=0 owner_key _8 domain |
||||
STSLICER // signature sender_address _5=0 owner_key _9 |
||||
s0 s3 XCHG2 // signature owner_key _5=0 _9 sender_address |
||||
STSLICER // signature owner_key _5=0 _10 |
||||
2 STU // signature owner_key _12 |
||||
ENDC // signature owner_key option_data |
||||
CTOS // signature owner_key _14 |
||||
HASHSU // signature owner_key _15 |
||||
-ROT // _15 signature owner_key |
||||
CHKSIGNU // _16 |
||||
}> |
||||
recv_internal PROC:<{ |
||||
// msg_value in_msg_full in_msg_body |
||||
DUP // msg_value in_msg_full in_msg_body in_msg_body |
||||
SEMPTY // msg_value in_msg_full in_msg_body _3 |
||||
IF:<{ // msg_value in_msg_full in_msg_body |
||||
16 PUSHPOW2DEC // msg_value in_msg_full in_msg_body _4=65535 |
||||
THROWANY |
||||
}> // msg_value in_msg_full in_msg_body |
||||
SWAP // msg_value in_msg_body in_msg_full |
||||
CTOS // msg_value in_msg_body cs |
||||
4 LDU // msg_value in_msg_body flags cs |
||||
SWAP |
||||
1 PUSHINT // msg_value in_msg_body cs flags _12=1 |
||||
AND // msg_value in_msg_body cs _13 |
||||
IFJMP:<{ // msg_value in_msg_body cs |
||||
3 BLKDROP // |
||||
}> // msg_value in_msg_body cs |
||||
SWAP // msg_value cs in_msg_body |
||||
32 LDU // msg_value cs op in_msg_body |
||||
load_data INLINECALLDICT // msg_value cs op in_msg_body _85 _86 _87 _88 _89 _90 |
||||
s5 POP // msg_value cs op in_msg_body data_scheme nft_item_code pricing key addr |
||||
s6 PUSH // msg_value cs op in_msg_body data_scheme nft_item_code pricing key addr op |
||||
0 EQINT // msg_value cs op in_msg_body data_scheme nft_item_code pricing key addr _26 |
||||
IFJMP:<{ // msg_value cs op in_msg_body data_scheme nft_item_code pricing key addr |
||||
DROP |
||||
s5 POP // msg_value cs key in_msg_body data_scheme nft_item_code pricing |
||||
s0 s3 XCHG // msg_value cs key pricing data_scheme nft_item_code in_msg_body |
||||
read_comment CALLDICT // msg_value cs key pricing data_scheme nft_item_code body |
||||
split_by_semicolon CALLDICT // msg_value cs key pricing data_scheme nft_item_code domain signature_encoded |
||||
s1 s4 PUXC // msg_value cs key signature_encoded data_scheme nft_item_code domain domain pricing |
||||
calcprice INLINECALLDICT // msg_value cs key signature_encoded data_scheme nft_item_code domain price |
||||
s1 s7 XCHG // domain cs key signature_encoded data_scheme nft_item_code msg_value price |
||||
GEQ // domain cs key signature_encoded data_scheme nft_item_code _39 |
||||
204 THROWIFNOT |
||||
s5 PUSH // domain cs key signature_encoded data_scheme nft_item_code domain |
||||
HASHSU // domain cs key signature_encoded data_scheme nft_item_code item_index |
||||
s0 s5 XCHG // domain item_index key signature_encoded data_scheme nft_item_code cs |
||||
LDMSGADDR // domain item_index key signature_encoded data_scheme nft_item_code _94 _93 |
||||
DROP // domain item_index key signature_encoded data_scheme nft_item_code sender_address |
||||
s4 PUSH // domain item_index key signature_encoded data_scheme nft_item_code sender_address key |
||||
0 NEQINT // domain item_index key signature_encoded data_scheme nft_item_code sender_address _47 |
||||
IF:<{ // domain item_index key signature_encoded data_scheme nft_item_code sender_address |
||||
s0 s3 XCHG // domain item_index key sender_address data_scheme nft_item_code signature_encoded |
||||
decode_asciicode CALLDICT // domain item_index key sender_address data_scheme nft_item_code signature |
||||
s3 s6 s1 PU2XC |
||||
s0 s6 XCHG // domain item_index nft_item_code sender_address data_scheme signature sender_address domain key |
||||
verify_signature CALLDICT // domain item_index nft_item_code sender_address data_scheme _51 |
||||
205 THROWIFNOT |
||||
}>ELSE<{ |
||||
s3 POP |
||||
s3 POP // domain item_index nft_item_code sender_address data_scheme |
||||
}> |
||||
s4 s(-1) PUXC // domain item_index nft_item_code sender_address domain data_scheme |
||||
get_attachment CALLDICT // domain item_index nft_item_code sender_address _54 |
||||
NEWC // domain item_index nft_item_code sender_address _54 _55 |
||||
s0 s5 XCHG2 // _54 item_index nft_item_code sender_address _55 domain |
||||
STSLICER // _54 item_index nft_item_code sender_address _56 |
||||
ENDC // _54 item_index nft_item_code sender_address _57 |
||||
NEWC |
||||
ROT // _54 item_index nft_item_code _57 _58 sender_address |
||||
STSLICER // _54 item_index nft_item_code _57 _59 |
||||
STREF // _54 item_index nft_item_code _60 |
||||
s1 s3 XCHG // nft_item_code item_index _54 _60 |
||||
STREF // nft_item_code item_index _61 |
||||
ENDC // nft_item_code item_index nft_content |
||||
s1 s2 XCHG // item_index nft_item_code nft_content |
||||
deploy_nft_item CALLDICT |
||||
}> // msg_value cs op in_msg_body data_scheme nft_item_code pricing key addr |
||||
5 1 BLKDROP2 // msg_value cs op addr |
||||
OVER |
||||
923790417 PUSHINT // msg_value cs op addr op _64=923790417 |
||||
EQUAL // msg_value cs op addr _65 |
||||
IFJMP:<{ // msg_value cs op addr |
||||
4 BLKDROP // |
||||
}> // msg_value cs op addr |
||||
0x2a0c8a20 PUSHINT // msg_value cs op addr _66 |
||||
s1 s2 XCHG // msg_value cs addr op _66 |
||||
EQUAL // msg_value cs addr _67 |
||||
IFJMP:<{ // msg_value cs addr |
||||
SWAP // msg_value addr cs |
||||
LDMSGADDR // msg_value addr _96 _95 |
||||
DROP // msg_value addr sender_address |
||||
OVER // msg_value addr sender_address addr |
||||
SDEQ // msg_value addr _72 |
||||
403 THROWIFNOT |
||||
0x2a0c8a20 PUSHINT // msg_value addr _74 |
||||
s1 s2 XCHG |
||||
0 PUSHINT |
||||
PUSHNULL |
||||
1 PUSHINT // addr msg_value _74 _75=0 _76 _77=1 |
||||
send_msg INLINECALLDICT |
||||
}> // msg_value cs addr |
||||
3 BLKDROP // |
||||
16 PUSHPOW2DEC // _79=65535 |
||||
THROWANY |
||||
}> |
||||
get_collection_data PROC:<{ |
||||
// |
||||
load_data INLINECALLDICT // _9 _10 _11 _12 _13 _14 |
||||
5 BLKDROP // content |
||||
-1 PUSHINT // content _7=-1 |
||||
zero_address CALLDICT // content _7=-1 _8 |
||||
s1 s2 XCHG // _7=-1 content _8 |
||||
}> |
||||
get_nft_address_by_index PROC:<{ |
||||
// index |
||||
load_data INLINECALLDICT // index _12 _13 _14 _15 _16 _17 |
||||
s4 s5 XCHG |
||||
5 BLKDROP // index nft_item_code |
||||
calculate_nft_item_state_init CALLDICT // state_init |
||||
0 PUSHINT // state_init _10 |
||||
SWAP // _10 state_init |
||||
calculate_nft_item_address CALLDICT // _11 |
||||
}> |
||||
get_nft_content PROC:<{ |
||||
// index individual_nft_content |
||||
NIP // individual_nft_content |
||||
}> |
||||
get_price PROC:<{ |
||||
// domain |
||||
load_data INLINECALLDICT // domain _9 _10 _11 _12 _13 _14 |
||||
s3 s5 XCHG |
||||
5 BLKDROP // domain pricing |
||||
calcprice INLINECALLDICT // _8 |
||||
}> |
||||
signature_data PROC:<{ |
||||
// sender_address domain |
||||
NEWC // sender_address domain _3 |
||||
MYADDR // sender_address domain _3 _4 |
||||
STSLICER // sender_address domain _5 |
||||
SWAP // sender_address _5 domain |
||||
STSLICER // sender_address _6 |
||||
SWAP // _6 sender_address |
||||
STSLICER // _7 |
||||
ENDC // option_data |
||||
CTOS // _9 |
||||
HASHSU // _10 |
||||
}> |
||||
dnsresolve PROC:<{ |
||||
// subdomain category |
||||
DROP // subdomain |
||||
DUP // subdomain subdomain |
||||
SBITS // subdomain _3 |
||||
8 PUSHINT // subdomain _3 _4=8 |
||||
MOD // subdomain _5 |
||||
0 EQINT // subdomain _7 |
||||
70 THROWIFNOT |
||||
DUP // subdomain subdomain |
||||
8 PLDI // subdomain _11 |
||||
0 EQINT // subdomain starts_with_zero_byte |
||||
OVER // subdomain starts_with_zero_byte subdomain |
||||
SBITS // subdomain starts_with_zero_byte _14 |
||||
8 EQINT // subdomain starts_with_zero_byte _16 |
||||
s1 s(-1) PUXC // subdomain starts_with_zero_byte starts_with_zero_byte _16 |
||||
AND // subdomain starts_with_zero_byte _17 |
||||
IFJMP:<{ // subdomain starts_with_zero_byte |
||||
2DROP // |
||||
8 PUSHINT // _18=8 |
||||
PUSHNULL // _18=8 _19 |
||||
}> // subdomain starts_with_zero_byte |
||||
DUP // subdomain starts_with_zero_byte starts_with_zero_byte |
||||
IF:<{ // subdomain starts_with_zero_byte |
||||
SWAP // starts_with_zero_byte subdomain |
||||
8 LDU // starts_with_zero_byte _43 _42 |
||||
NIP // starts_with_zero_byte subdomain |
||||
SWAP // subdomain starts_with_zero_byte |
||||
}> // subdomain starts_with_zero_byte |
||||
OVER // subdomain starts_with_zero_byte subdomain |
||||
get_top_domain_bits CALLDICT // subdomain starts_with_zero_byte top_subdomain_bits |
||||
s2 s2 XCPU // top_subdomain_bits starts_with_zero_byte subdomain top_subdomain_bits |
||||
LDSLICEX // top_subdomain_bits starts_with_zero_byte _45 _44 |
||||
DROP // top_subdomain_bits starts_with_zero_byte top_subdomain |
||||
HASHSU // top_subdomain_bits starts_with_zero_byte item_index |
||||
47763 PUSHINT // top_subdomain_bits starts_with_zero_byte item_index _31=47763 |
||||
NEWC // top_subdomain_bits starts_with_zero_byte item_index _31=47763 _32 |
||||
16 STU // top_subdomain_bits starts_with_zero_byte item_index _34 |
||||
SWAP // top_subdomain_bits starts_with_zero_byte _34 item_index |
||||
get_nft_address_by_index CALLDICT // top_subdomain_bits starts_with_zero_byte _34 _35 |
||||
STSLICER // top_subdomain_bits starts_with_zero_byte _36 |
||||
ENDC // top_subdomain_bits starts_with_zero_byte result |
||||
SWAP // top_subdomain_bits result starts_with_zero_byte |
||||
IF:<{ // top_subdomain_bits result |
||||
8 PUSHINT // top_subdomain_bits result _38=8 |
||||
}>ELSE<{ // top_subdomain_bits result |
||||
0 PUSHINT // top_subdomain_bits result _38=0 |
||||
}> |
||||
s1 s2 XCHG // result top_subdomain_bits _38 |
||||
ADD // result _41 |
||||
SWAP // _41 result |
||||
}> |
||||
}END>c |
@ -0,0 +1 @@
|
||||
{"hex":"b5ee9c72c1021f0100053000000d00120017001c002100850090009b00a100a900b300b800bd00c200d9010301080113015f0164018e020d027802bc0339037f03fa043f044c04b605300114ff00f4a413f4bcf2c80b010201620b0202012008030201200704020120060500c3b461843ae9240f152118001e5c08de018206ebe0fa1a60e038001e5c339e8086007ae140f8001e5c33b84111c466105e033e04883dcb11fb64ddc4964ad1ba06b879240dc23572f37cc5caaab143a2fffbc4180012660f003c003060fe81e60f00300011b64a5e0182ebe0fa100011b8fcff00c10235f03802037b200a09000ca959f00c6c710010a874f00c10475f070202cc130c020120100d0201480f0e002901b232ffd40173c59400f3c5b3333332cff27b5520004f3b513434fffe900835d27080279fc07e9035353534cfcc0415c415b80c1c1b5b5b5b490415c415a0020120121100115fa443070baf2e14d80093420c00496308103e88064e020c00596308101f48032e020c00696308101908028e020c007963081012c801ee020c00896308100c88014e020c009943080647ae0c00a93803275e07a7180201481514004f5c88e2021d74912d71859cf1621d74a20c00020b39b01c001f2e0ca02d430d0029131e2e631c9d0803f34f8276f1002d0d3030171b0925f04e0fa40fa4031fa003171d721fa0031fa0030f00c3026b3e3023b5337c70516b08e3410795f09fa40307020f8256d8040708010c8cb055007cf165005fa0215cb6a12cb1fcb3f226eb39458cf17019132e201c901fb00e027c70091709507d31f5088e220c000e30208d33f81d1c1604ca82105fcc3d1452a0ba8e95395372c705f2e191109a104910384760441302db3ce082101a0b9d5152a0ba8e16365b3435355121c705f2e19a01d4d4305504f823f00de02982104eb1f0f9bae3023028821044beae41bae302355b33353582102fcb26a213ba1a19181700848e397082108b77173504c8cbff5003cf165e218040708010c8cb055007cf165005fa0215cb6a12cb1fcb3f226eb39458cf17019132e201c901fb00e05f04840ff2f001f4388050f833d0f4043052408307f40e6fa1f2e19fd30721c00022c001b1f2e1a021c0008e9324109b10680710461035514a104c030ddb3c129630103a395f07e201c0018e32708210370fec51586d8100a0708010c8cb055007cf165005fa0215cb6a12cb1fcb3f226eb39458cf17019132e201c901fb00915be21a0088313637375146c705f2e19b02d3ff20d74ac20006d0d30701c000f2e19cf404300698d43040158307f417983050048307f45b30e270c8cb07f400c94014503305f823f00d01f03401fa4021f00bfa40d20031fa0082101dcd65001da121945314a0a1de22d70b01c300209205a19135e220c2fff2e192218e3e821005138d91c8500bcf16500dcf1671244b145447c0708010c8cb055007cf165005fa0215cb6a12cb1fcb3f226eb39458cf17019132e201c901fb00106994102c395be2011b00868e3528f00b8210d53276db103946066d71708010c8cb055007cf165005fa0215cb6a12cb1fcb3f226eb39458cf17019132e201c901fb00941028355be25504f823f00d001630353535355504f823f00d01ce5f0432355203c705f2e19502fa40d4d430d0d4d4d4d4306d1382f06105d6cc76af400325e94d588ce511be5bfdbb73b437dc51eca43917d7a43e3d018307f41782f082a3537ff0dbce7eec35d69edc3a189ee6f17d82f353a553f9aa96cb0be3ce89018307f4171e00f082f0c9046f7a37ad0ea7cee73355984fa5428982f8b37c8f7bcec91f7ac71a7cd104018307f41770c8cb07f400c9241057045023f823f00d12a182101dcd6500a120c2008e2f8210d53276db706d71708010c8cb055007cf165005fa0215cb6a12cb1fcb3f226eb39458cf17019132e201c901fb00915be2185ba0cd"} |
@ -0,0 +1,944 @@
|
||||
"Asm.fif" include |
||||
// automatically generated from `contracts/nft-item.fc` incl:`contracts/imports/dns-utils.fc` incl:`contracts/imports/stdlib.fc` incl:`contracts/imports/op-codes.fc` incl:`contracts/imports/params.fc` |
||||
PROGRAM{ |
||||
DECLPROC zero_address |
||||
DECLPROC get_top_domain_bits |
||||
DECLPROC read_comment |
||||
DECLPROC read_domain_from_comment |
||||
DECLPROC check_domain_string |
||||
DECLPROC split_by_semicolon |
||||
DECLPROC decode_asciicode |
||||
DECLPROC get_min_price_config |
||||
DECLPROC price_function |
||||
DECLPROC get_min_price |
||||
DECLPROC force_chain |
||||
DECLPROC load_data |
||||
DECLPROC store_data |
||||
DECLPROC send_msg |
||||
DECLPROC transfer_ownership |
||||
DECLPROC recv_internal |
||||
102351 DECLMETHOD get_nft_data |
||||
90228 DECLMETHOD get_editor |
||||
119378 DECLMETHOD get_domain |
||||
91481 DECLMETHOD get_last_fill_up_time |
||||
123660 DECLMETHOD dnsresolve |
||||
zero_address PROC:<{ |
||||
// |
||||
0 PUSHINT // _0=0 |
||||
NEWC // _0=0 _1 |
||||
2 STU // _3 |
||||
ENDC // _4 |
||||
CTOS // _5 |
||||
}> |
||||
get_top_domain_bits PROC:<{ |
||||
// domain |
||||
0 PUSHINT // domain i=0 |
||||
UNTIL:<{ |
||||
SWAP // i domain |
||||
8 LDU // i char domain |
||||
SWAP // i domain char |
||||
0 EQINT // i domain need_break |
||||
DUP // i domain need_break need_break |
||||
NOT // i domain need_break _11 |
||||
IF:<{ // i domain need_break |
||||
s0 s2 XCHG // need_break domain i |
||||
8 ADDCONST // need_break domain i |
||||
s0 s2 XCHG // i domain need_break |
||||
}> // i domain need_break |
||||
s1 s2 XCHG // domain i need_break |
||||
}> // domain i |
||||
NIP // i |
||||
DUP // i i |
||||
0 EQINT // i _16 |
||||
201 THROWIF |
||||
}> |
||||
read_comment PROC:<{ |
||||
// in_msg_body |
||||
NEWC // in_msg_body result |
||||
UNTIL:<{ |
||||
OVER // in_msg_body result in_msg_body |
||||
SBITS // in_msg_body result _6 |
||||
s1 s2 XCHG // result in_msg_body _6 |
||||
LDSLICEX // result _5 in_msg_body |
||||
-ROT // in_msg_body result _5 |
||||
STSLICER // in_msg_body result |
||||
OVER // in_msg_body result in_msg_body |
||||
SREFS // in_msg_body result refs_len |
||||
DUP // in_msg_body result refs_len refs_len |
||||
0 EQINT // in_msg_body result refs_len need_break |
||||
DUP // in_msg_body result refs_len need_break need_break |
||||
NOT // in_msg_body result refs_len need_break _13 |
||||
IF:<{ // in_msg_body result refs_len need_break |
||||
SWAP // in_msg_body result need_break refs_len |
||||
1 EQINT // in_msg_body result need_break _16 |
||||
202 THROWIFNOT |
||||
s0 s2 XCHG // need_break result in_msg_body |
||||
LDREF // need_break result _26 _25 |
||||
DROP // need_break result _18 |
||||
CTOS // need_break result in_msg_body |
||||
s0 s2 XCHG // in_msg_body result need_break |
||||
}>ELSE<{ |
||||
NIP // in_msg_body result need_break |
||||
}> |
||||
}> // in_msg_body result |
||||
NIP // result |
||||
ENDC // _21 |
||||
CTOS // _22 |
||||
}> |
||||
read_domain_from_comment PROC:<{ |
||||
// in_msg_body |
||||
read_comment CALLDICT // _1 |
||||
}> |
||||
check_domain_string PROC:<{ |
||||
// domain |
||||
0 PUSHINT // domain i=0 |
||||
OVER // domain i=0 domain |
||||
SBITS // domain i=0 len |
||||
UNTIL:<{ |
||||
2DUP // domain i len i len |
||||
EQUAL // domain i len need_break |
||||
DUP // domain i len need_break need_break |
||||
NOT // domain i len need_break _8 |
||||
IF:<{ // domain i len need_break |
||||
DROP // domain i len |
||||
s0 s2 XCHG // len i domain |
||||
8 LDU // len i char domain |
||||
OVER // len i char domain char |
||||
45 EQINT // len i char domain is_hyphen |
||||
s3 PUSH // len i char domain is_hyphen i |
||||
0 GTINT // len i char domain is_hyphen _18 |
||||
AND // len i char domain _19 |
||||
s4 PUSH // len i char domain _19 len |
||||
-8 ADDCONST // len i char domain _19 _21 |
||||
s4 s(-1) PUXC // len i char domain _19 i _21 |
||||
LESS // len i char domain _19 _22 |
||||
AND // len i char domain _23 |
||||
s2 PUSH // len i char domain _23 char |
||||
47 GTINT // len i char domain _23 _25 |
||||
s3 PUSH // len i char domain _23 _25 char |
||||
58 LESSINT // len i char domain _23 _25 _27 |
||||
AND // len i char domain _23 _28 |
||||
OR // len i char domain _29 |
||||
s2 PUSH // len i char domain _29 char |
||||
96 GTINT // len i char domain _29 _31 |
||||
s0 s3 XCHG // len i _31 domain _29 char |
||||
123 LESSINT // len i _31 domain _29 _33 |
||||
s1 s3 XCHG // len i _29 domain _31 _33 |
||||
AND // len i _29 domain _34 |
||||
s1 s2 XCHG // len i domain _29 _34 |
||||
OR // len i domain valid_char |
||||
NOT // len i domain need_break |
||||
DUP // len i domain need_break need_break |
||||
NOT // len i domain need_break _37 |
||||
IF:<{ // len i domain need_break |
||||
s0 s2 XCHG // len need_break domain i |
||||
8 ADDCONST // len need_break domain i |
||||
s0 s2 XCHG // len i domain need_break |
||||
}> // len i domain need_break |
||||
s1 s3 XCHG // domain i len need_break |
||||
}> // domain i len need_break |
||||
}> // domain i len |
||||
1 2 BLKDROP2 // i len |
||||
EQUAL // _40 |
||||
}> |
||||
split_by_semicolon PROC:<{ |
||||
// str |
||||
0 PUSHINT // str i=0 |
||||
OVER // str i=0 str |
||||
SBITS // str i=0 len |
||||
NEWC // str i=0 len result1 |
||||
UNTIL:<{ |
||||
s2 s1 PUSH2 // str i len result1 i len |
||||
EQUAL // str i len result1 need_break |
||||
DUP // str i len result1 need_break need_break |
||||
NOT // str i len result1 need_break _10 |
||||
IF:<{ // str i len result1 need_break |
||||
DROP // str i len result1 |
||||
s0 s3 XCHG // result1 i len str |
||||
8 LDU // result1 i len char str |
||||
OVER // result1 i len char str char |
||||
59 EQINT // result1 i len char str need_break |
||||
s0 s4 XCHG // result1 need_break len char str i |
||||
8 ADDCONST // result1 need_break len char str i |
||||
s4 PUSH // result1 need_break len char str i need_break |
||||
NOT // result1 need_break len char str i _19 |
||||
IF:<{ // result1 need_break len char str i |
||||
s2 s5 XCHG2 // i need_break len str char result1 |
||||
8 STU // i need_break len str result1 |
||||
s4 s4 XCHG2 // result1 need_break len i str |
||||
}>ELSE<{ |
||||
s2 POP // result1 need_break len i str |
||||
}> |
||||
s3 PUSH // result1 need_break len i str need_break |
||||
NOT // result1 need_break len i str _23 |
||||
s2 s3 PUSH2 // result1 need_break len i str _23 i len |
||||
GEQ // result1 need_break len i str _23 _24 |
||||
AND // result1 need_break len i str _25 |
||||
IF:<{ // result1 need_break len i str |
||||
259 THROW |
||||
}> // result1 need_break len i str |
||||
s4 s4 XCHG2 |
||||
s0 s3 XCHG // str i len result1 need_break |
||||
}> // str i len result1 need_break |
||||
}> // str i len result1 |
||||
ENDC // str i len _28 |
||||
CTOS // str i len _29 |
||||
s0 s2 XCHG // str _29 len i |
||||
SUB // str _29 _31 |
||||
s1 s2 XCHG // _29 str _31 |
||||
LDSLICEX // _29 _36 _35 |
||||
DROP // _29 _30 |
||||
}> |
||||
decode_asciicode PROC:<{ |
||||
// str |
||||
DUP // str str |
||||
SBITS // str len |
||||
0 PUSHINT // str len need_break=0 |
||||
NEWC // str len need_break=0 result |
||||
OVER // str len need_break=0 result res_len=0 |
||||
WHILE:<{ |
||||
s0 s2 XCHG // str len res_len result need_break |
||||
NOT // str len res_len result _9 |
||||
}>DO<{ // str len res_len result |
||||
s2 PUSH // str len res_len result len |
||||
0 EQINT // str len res_len result need_break |
||||
DUP // str len res_len result need_break need_break |
||||
NOT // str len res_len result need_break _12 |
||||
IF:<{ // str len res_len result need_break |
||||
s0 s4 XCHG // need_break len res_len result str |
||||
8 LDU // need_break len res_len result char str |
||||
0 PUSHINT // need_break len res_len result char str byte=0 |
||||
s2 PUSH // need_break len res_len result char str byte=0 char |
||||
64 GTINT // need_break len res_len result char str byte=0 _20 |
||||
s3 PUSH // need_break len res_len result char str byte=0 _20 char |
||||
91 LESSINT // need_break len res_len result char str byte=0 _20 _22 |
||||
AND // need_break len res_len result char str byte=0 _23 |
||||
IF:<{ // need_break len res_len result char str byte=0 |
||||
DROP // need_break len res_len result char str |
||||
SWAP // need_break len res_len result str char |
||||
-65 ADDCONST // need_break len res_len result str byte |
||||
}>ELSE<{ // need_break len res_len result char str byte=0 |
||||
s2 PUSH // need_break len res_len result char str byte=0 char |
||||
96 GTINT // need_break len res_len result char str byte=0 _27 |
||||
s3 PUSH // need_break len res_len result char str byte=0 _27 char |
||||
123 LESSINT // need_break len res_len result char str byte=0 _27 _29 |
||||
AND // need_break len res_len result char str byte=0 _30 |
||||
IF:<{ // need_break len res_len result char str byte=0 |
||||
DROP // need_break len res_len result char str |
||||
SWAP // need_break len res_len result str char |
||||
-71 ADDCONST // need_break len res_len result str byte |
||||
}>ELSE<{ // need_break len res_len result char str byte=0 |
||||
s2 PUSH // need_break len res_len result char str byte=0 char |
||||
47 GTINT // need_break len res_len result char str byte=0 _34 |
||||
s3 PUSH // need_break len res_len result char str byte=0 _34 char |
||||
58 LESSINT // need_break len res_len result char str byte=0 _34 _36 |
||||
AND // need_break len res_len result char str byte=0 _37 |
||||
IF:<{ // need_break len res_len result char str byte=0 |
||||
DROP // need_break len res_len result char str |
||||
SWAP // need_break len res_len result str char |
||||
4 ADDCONST // need_break len res_len result str byte |
||||
}>ELSE<{ // need_break len res_len result char str byte=0 |
||||
s2 PUSH // need_break len res_len result char str byte=0 char |
||||
45 EQINT // need_break len res_len result char str byte=0 _41 |
||||
IF:<{ // need_break len res_len result char str byte=0 |
||||
DROP |
||||
NIP // need_break len res_len result str |
||||
62 PUSHINT // need_break len res_len result str byte=62 |
||||
}>ELSE<{ // need_break len res_len result char str byte=0 |
||||
s0 s2 XCHG // need_break len res_len result byte=0 str char |
||||
95 EQINT // need_break len res_len result byte=0 str _44 |
||||
IF:<{ // need_break len res_len result byte=0 str |
||||
NIP // need_break len res_len result str |
||||
63 PUSHINT // need_break len res_len result str byte=63 |
||||
}>ELSE<{ // need_break len res_len result byte=0 str |
||||
260 THROW |
||||
SWAP // need_break len res_len result str byte |
||||
}> |
||||
}> |
||||
}> |
||||
}> |
||||
}> |
||||
s0 s4 XCHG // need_break byte res_len result str len |
||||
-8 ADDCONST // need_break byte res_len result str len |
||||
DUP // need_break byte res_len result str len len |
||||
0 GTINT // need_break byte res_len result str len _51 |
||||
IF:<{ // need_break byte res_len result str len |
||||
s4 s2 XCHG2 // need_break str res_len len byte result |
||||
6 STU // need_break str res_len len result |
||||
}>ELSE<{ // need_break byte res_len result str len |
||||
8 PUSHINT // need_break byte res_len result str len _56=8 |
||||
s4 s0 PUSH2 // need_break byte res_len result str len _56=8 res_len _57=8 |
||||
MOD // need_break byte res_len result str len _56=8 _58 |
||||
SUB // need_break byte res_len result str len _59 |
||||
s5 s3 s0 XCHG3 // need_break str res_len len byte result _59 |
||||
STUX // need_break str res_len len result |
||||
}> |
||||
s0 s2 XCHG // need_break str result len res_len |
||||
6 ADDCONST // need_break str result len res_len |
||||
s0 s0 s3 XCHG3 |
||||
s0 s4 XCHG // str len res_len result need_break |
||||
}> // str len res_len result need_break |
||||
s0 s2 XCHG // str len need_break result res_len |
||||
}> // str len res_len result |
||||
3 1 BLKDROP2 // result |
||||
ENDC // _63 |
||||
CTOS // _64 |
||||
}> |
||||
get_min_price_config PROC:<{ |
||||
// domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
4 EQINT // domain_char_count _2 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
1000 PUSHINT // _3=1000 |
||||
100 PUSHINT // _3=1000 _4=100 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
5 EQINT // domain_char_count _6 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
500 PUSHINT // _7=500 |
||||
50 PUSHINT // _7=500 _8=50 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
6 EQINT // domain_char_count _10 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
400 PUSHINT // _11=400 |
||||
40 PUSHINT // _11=400 _12=40 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
7 EQINT // domain_char_count _14 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
300 PUSHINT // _15=300 |
||||
30 PUSHINT // _15=300 _16=30 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
8 EQINT // domain_char_count _18 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
200 PUSHINT // _19=200 |
||||
20 PUSHINT // _19=200 _20=20 |
||||
}> // domain_char_count |
||||
DUP // domain_char_count domain_char_count |
||||
9 EQINT // domain_char_count _22 |
||||
IFJMP:<{ // domain_char_count |
||||
DROP // |
||||
100 PUSHINT // _23=100 |
||||
10 PUSHINT // _23=100 _24=10 |
||||
}> // domain_char_count |
||||
10 EQINT // _26 |
||||
IFJMP:<{ // |
||||
50 PUSHINT // _27=50 |
||||
5 PUSHINT // _27=50 _28=5 |
||||
}> // |
||||
10 PUSHINT // _29=10 |
||||
1 PUSHINT // _29=10 _30=1 |
||||
}> |
||||
price_function PROC:<{ |
||||
// length multiplierx50 steepness |
||||
25 PUSHINT // length multiplierx50 steepness price=25 |
||||
s3 PUSH // length multiplierx50 steepness price=25 length |
||||
3 EQINT // length multiplierx50 steepness price=25 _6 |
||||
IF:<{ // length multiplierx50 steepness price=25 |
||||
DROP // length multiplierx50 steepness |
||||
100 PUSHINT // length multiplierx50 steepness price=100 |
||||
}> // length multiplierx50 steepness price |
||||
s3 PUSH // length multiplierx50 steepness price length |
||||
4 EQINT // length multiplierx50 steepness price _9 |
||||
IF:<{ // length multiplierx50 steepness price |
||||
DROP // length multiplierx50 steepness |
||||
50 PUSHINT // length multiplierx50 steepness price=50 |
||||
}> // length multiplierx50 steepness price |
||||
s3 PUSH // length multiplierx50 steepness price length |
||||
5 EQINT // length multiplierx50 steepness price _12 |
||||
IF:<{ // length multiplierx50 steepness price |
||||
DROP // length multiplierx50 steepness |
||||
25 PUSHINT // length multiplierx50 steepness price=25 |
||||
}> // length multiplierx50 steepness price |
||||
s3 PUSH // length multiplierx50 steepness price length |
||||
6 EQINT // length multiplierx50 steepness price _15 |
||||
IF:<{ // length multiplierx50 steepness price |
||||
DROP // length multiplierx50 steepness |
||||
20 PUSHINT // length multiplierx50 steepness price=20 |
||||
}> // length multiplierx50 steepness price |
||||
s3 PUSH // length multiplierx50 steepness price length |
||||
7 EQINT // length multiplierx50 steepness price _18 |
||||
IF:<{ // length multiplierx50 steepness price |
||||
DROP // length multiplierx50 steepness |
||||
15 PUSHINT // length multiplierx50 steepness price=15 |
||||
}> // length multiplierx50 steepness price |
||||
s3 PUSH // length multiplierx50 steepness price length |
||||
8 EQINT // length multiplierx50 steepness price _21 |
||||
IF:<{ // length multiplierx50 steepness price |
||||
DROP // length multiplierx50 steepness |
||||
10 PUSHINT // length multiplierx50 steepness price=10 |
||||
}> // length multiplierx50 steepness price |
||||
s0 s3 XCHG // price multiplierx50 steepness length |
||||
8 GTINT // price multiplierx50 steepness _24 |
||||
IF:<{ // price multiplierx50 steepness |
||||
5 PUSHINT |
||||
s3 POP // price=5 multiplierx50 steepness |
||||
}> // price multiplierx50 steepness |
||||
s0 s2 PUXC // steepness multiplierx50 steepness price |
||||
MUL // steepness multiplierx50 _26 |
||||
10 PUSHINT // steepness multiplierx50 _26 _27=10 |
||||
s0 s3 XCHG2 // _26 multiplierx50 _27=10 steepness |
||||
SUB // _26 multiplierx50 _28 |
||||
25 MULCONST // _26 multiplierx50 _30 |
||||
s1 s2 XCHG // multiplierx50 _26 _30 |
||||
ADD // multiplierx50 _31 |
||||
10 PUSHINT // multiplierx50 _31 _32=10 |
||||
DIV // multiplierx50 price |
||||
1000000000 PUSHINT // multiplierx50 price _34=1000000000 |
||||
MUL // multiplierx50 _35 |
||||
SWAP // _35 multiplierx50 |
||||
MUL // _36 |
||||
50 PUSHINT // _36 _37=50 |
||||
DIV // _38 |
||||
}> |
||||
get_min_price PROC:<{ |
||||
// domain_bits_length now_time |
||||
SWAP // now_time domain_bits_length |
||||
3 RSHIFT# // now_time _5 |
||||
get_min_price_config CALLDICT // now_time start_min_price end_min_price |
||||
SWAP |
||||
1000000000 PUSHINT // now_time end_min_price start_min_price _7=1000000000 |
||||
MUL // now_time end_min_price start_min_price |
||||
SWAP |
||||
1000000000 PUSHINT // now_time start_min_price end_min_price _9=1000000000 |
||||
MUL // now_time start_min_price end_min_price |
||||
s0 s2 XCHG |
||||
1659171600 PUSHINT // end_min_price start_min_price now_time _12=1659171600 |
||||
SUB // end_min_price start_min_price seconds |
||||
2592000 PUSHINT // end_min_price start_min_price seconds _15=2592000 |
||||
DIV // end_min_price start_min_price months |
||||
DUP // end_min_price start_min_price months months |
||||
21 GTINT // end_min_price start_min_price months _18 |
||||
IFJMP:<{ // end_min_price start_min_price months |
||||
2DROP // end_min_price |
||||
}> // end_min_price start_min_price months |
||||
1 2 BLKDROP2 // start_min_price months |
||||
REPEAT:<{ // start_min_price |
||||
90 MULCONST // _20 |
||||
100 PUSHINT // _20 _21=100 |
||||
DIV // start_min_price |
||||
}> |
||||
}> |
||||
force_chain PROC:<{ |
||||
// addr |
||||
REWRITESTDADDR // _8 _9 |
||||
DROP // wc |
||||
0 PUSHINT // wc _5 |
||||
EQUAL // _6 |
||||
333 THROWIFNOT |
||||
}> |
||||
load_data PROC:<{ |
||||
// |
||||
c4 PUSH // _1 |
||||
CTOS // ds |
||||
256 LDU // _5 ds |
||||
LDMSGADDR // index collection_address ds |
||||
DUP // index collection_address ds ds |
||||
SBITS // index collection_address ds _10 |
||||
0 GTINT // index collection_address ds _12 |
||||
IFJMP:<{ // index collection_address ds |
||||
-1 PUSHINT // index collection_address ds _13=-1 |
||||
SWAP // index collection_address _13=-1 ds |
||||
LDMSGADDR // index collection_address _13=-1 _14 ds |
||||
LDREF // index collection_address _13=-1 _14 _16 ds |
||||
LDREF // index collection_address _13=-1 _14 _16 _18 ds |
||||
LDREF // index collection_address _13=-1 _14 _16 _18 _20 ds |
||||
64 LDU // index collection_address _13=-1 _14 _16 _18 _20 _44 _43 |
||||
DROP // index collection_address _13=-1 _14 _16 _18 _20 _22 |
||||
s5 s7 XCHG |
||||
s5 s6 XCHG // _13=-1 index collection_address _14 _16 _18 _20 _22 |
||||
}> // index collection_address ds |
||||
DROP // index collection_address |
||||
0 PUSHINT // index collection_address _25=0 |
||||
PUSHNULL // index collection_address _25=0 _26 |
||||
PUSHNULL // index collection_address _25=0 _26 _27 |
||||
PUSHNULL // index collection_address _25=0 _26 _27 _28 |
||||
PUSHNULL // index collection_address _25=0 _26 _27 _28 _29 |
||||
s4 PUSH // index collection_address _25=0 _26 _27 _28 _29 _30=0 |
||||
s5 s7 XCHG |
||||
s5 s6 XCHG // _25=0 index collection_address _26 _27 _28 _29 _30=0 |
||||
}> |
||||
store_data PROC:<{ |
||||
// index collection_address owner_address content uri domain last_fill_up_time |
||||
s0 s6 XCHG |
||||
NEWC // last_fill_up_time collection_address owner_address content uri domain index _7 |
||||
256 STU // last_fill_up_time collection_address owner_address content uri domain _9 |
||||
s0 s5 XCHG2 // last_fill_up_time domain owner_address content uri _9 collection_address |
||||
STSLICER // last_fill_up_time domain owner_address content uri _10 |
||||
s0 s3 XCHG2 // last_fill_up_time domain uri content _10 owner_address |
||||
STSLICER // last_fill_up_time domain uri content _11 |
||||
STREF // last_fill_up_time domain uri _12 |
||||
STREF // last_fill_up_time domain _13 |
||||
STREF // last_fill_up_time _14 |
||||
64 STU // _16 |
||||
ENDC // _17 |
||||
c4 POP |
||||
}> |
||||
send_msg PROCINLINE:<{ |
||||
// to_address amount op query_id payload send_mode |
||||
0 PUSHINT // to_address amount op query_id payload send_mode _7=0 |
||||
16 PUSHINT // to_address amount op query_id payload send_mode _7=0 _8=16 |
||||
NEWC // to_address amount op query_id payload send_mode _7=0 _8=16 _9 |
||||
6 STU // to_address amount op query_id payload send_mode _7=0 _11 |
||||
s0 s7 XCHG2 // _7=0 amount op query_id payload send_mode _11 to_address |
||||
STSLICER // _7=0 amount op query_id payload send_mode _12 |
||||
s0 s5 XCHG2 // _7=0 send_mode op query_id payload _12 amount |
||||
STVARUINT16 // _7=0 send_mode op query_id payload _13 |
||||
s1 s5 XCHG // payload send_mode op query_id _7=0 _13 |
||||
107 STU // payload send_mode op query_id _27 |
||||
s1 s2 XCHG // payload send_mode query_id op _27 |
||||
32 STU // payload send_mode query_id _29 |
||||
64 STU // payload send_mode msg |
||||
s2 PUSH // payload send_mode msg payload |
||||
ISNULL // payload send_mode msg _32 |
||||
NOT // payload send_mode msg _33 |
||||
IF:<{ // payload send_mode msg |
||||
ROT // send_mode msg payload |
||||
STBR // send_mode msg |
||||
SWAP // msg send_mode |
||||
}>ELSE<{ |
||||
s2 POP // msg send_mode |
||||
}> |
||||
SWAP // send_mode msg |
||||
ENDC // send_mode _35 |
||||
SWAP // _35 send_mode |
||||
SENDRAWMSG |
||||
}> |
||||
transfer_ownership PROCINLINE:<{ |
||||
// my_balance index collection_address owner_address content uri sender_address query_id in_msg_body fwd_fees domain |
||||
s4 POP // my_balance index collection_address owner_address content uri domain query_id in_msg_body fwd_fees |
||||
SWAP // my_balance index collection_address owner_address content uri domain query_id fwd_fees in_msg_body |
||||
LDMSGADDR // my_balance index collection_address owner_address content uri domain query_id fwd_fees new_owner_address in_msg_body |
||||
OVER // my_balance index collection_address owner_address content uri domain query_id fwd_fees new_owner_address in_msg_body new_owner_address |
||||
force_chain CALLDICT |
||||
LDMSGADDR // my_balance index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination in_msg_body |
||||
1 LDI // my_balance index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination _57 _56 |
||||
NIP // my_balance index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination in_msg_body |
||||
LDVARUINT16 // my_balance index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination forward_amount in_msg_body |
||||
500000000 PUSHINT // my_balance index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination forward_amount in_msg_body _25 |
||||
s1 s13 XCHG // in_msg_body index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination forward_amount my_balance _25 |
||||
SUB // in_msg_body index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination forward_amount rest_amount |
||||
OVER // in_msg_body index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination forward_amount rest_amount forward_amount |
||||
IF:<{ // in_msg_body index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination forward_amount rest_amount |
||||
s1 s4 PUSH2 // in_msg_body index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination forward_amount rest_amount forward_amount fwd_fees |
||||
ADD // in_msg_body index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination forward_amount rest_amount _27 |
||||
SUB // in_msg_body index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination forward_amount rest_amount |
||||
}> // in_msg_body index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination forward_amount rest_amount |
||||
s2 PUSH // in_msg_body index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination forward_amount rest_amount response_destination |
||||
2 PLDU // in_msg_body index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination forward_amount rest_amount _31 |
||||
0 NEQINT // in_msg_body index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination forward_amount rest_amount need_response |
||||
DUP // in_msg_body index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination forward_amount rest_amount need_response need_response |
||||
IF:<{ // in_msg_body index collection_address owner_address content uri domain query_id fwd_fees new_owner_address response_destination forward_amount rest_amount need_response |
||||
s0 s5 XCHG // in_msg_body index collection_address owner_address content uri domain query_id need_response new_owner_address response_destination forward_amount rest_amount fwd_fees |
||||
SUB // in_msg_body index collection_address owner_address content uri domain query_id need_response new_owner_address response_destination forward_amount rest_amount |
||||
}>ELSE<{ |
||||
s5 POP // in_msg_body index collection_address owner_address content uri domain query_id need_response new_owner_address response_destination forward_amount rest_amount |
||||
}> |
||||
DUP // in_msg_body index collection_address owner_address content uri domain query_id need_response new_owner_address response_destination forward_amount rest_amount rest_amount |
||||
-1 GTINT // in_msg_body index collection_address owner_address content uri domain query_id need_response new_owner_address response_destination forward_amount rest_amount _37 |
||||
402 THROWIFNOT |
||||
OVER // in_msg_body index collection_address owner_address content uri domain query_id need_response new_owner_address response_destination forward_amount rest_amount forward_amount |
||||
IF:<{ // in_msg_body index collection_address owner_address content uri domain query_id need_response new_owner_address response_destination forward_amount rest_amount |
||||
0x05138d91 PUSHINT // in_msg_body index collection_address owner_address content uri domain query_id need_response new_owner_address response_destination forward_amount rest_amount _39 |
||||
NEWC // in_msg_body index collection_address owner_address content uri domain query_id need_response new_owner_address response_destination forward_amount rest_amount _39 _40 |
||||
s0 s11 XCHG2 // in_msg_body index collection_address _39 content uri domain query_id need_response new_owner_address response_destination forward_amount rest_amount _40 owner_address |
||||
STSLICER // in_msg_body index collection_address _39 content uri domain query_id need_response new_owner_address response_destination forward_amount rest_amount _41 |
||||
s0 s13 XCHG2 // rest_amount index collection_address _39 content uri domain query_id need_response new_owner_address response_destination forward_amount _41 in_msg_body |
||||
STSLICER // rest_amount index collection_address _39 content uri domain query_id need_response new_owner_address response_destination forward_amount _42 |
||||
1 PUSHINT // rest_amount index collection_address _39 content uri domain query_id need_response new_owner_address response_destination forward_amount _42 _43=1 |
||||
s4 PUSH |
||||
s11 s1 s4 XCHG3 |
||||
s7 s11 s(-1) PUXC2 // rest_amount index collection_address response_destination content uri domain query_id need_response new_owner_address new_owner_address forward_amount _39 query_id _42 _43=1 |
||||
send_msg INLINECALLDICT |
||||
s6 s9 XCHG // response_destination index collection_address rest_amount content uri domain query_id need_response new_owner_address |
||||
}>ELSE<{ |
||||
s2 s12 XCHG |
||||
s9 POP |
||||
2DROP // response_destination index collection_address rest_amount content uri domain query_id need_response new_owner_address |
||||
}> |
||||
SWAP // response_destination index collection_address rest_amount content uri domain query_id new_owner_address need_response |
||||
IF:<{ // response_destination index collection_address rest_amount content uri domain query_id new_owner_address |
||||
s8 PUSH // response_destination index collection_address rest_amount content uri domain query_id new_owner_address response_destination |
||||
force_chain CALLDICT |
||||
0xd53276db PUSHINT // response_destination index collection_address rest_amount content uri domain query_id new_owner_address _46 |
||||
s3 s9 XCHG |
||||
s6 s0 s6 XCHG3 |
||||
PUSHNULL |
||||
1 PUSHINT // domain index collection_address new_owner_address content uri response_destination rest_amount _46 query_id _47 _48=1 |
||||
send_msg INLINECALLDICT |
||||
}>ELSE<{ |
||||
s2 s8 XCHG |
||||
s5 POP |
||||
2DROP // domain index collection_address new_owner_address content uri |
||||
}> |
||||
5 ROLL |
||||
NOW // index collection_address new_owner_address content uri domain _50 |
||||
store_data CALLDICT |
||||
}> |
||||
recv_internal PROC:<{ |
||||
// msg_value in_msg_full in_msg_body |
||||
BALANCE // msg_value in_msg_full in_msg_body _4 |
||||
FIRST // msg_value in_msg_full in_msg_body my_balance |
||||
s0 s2 XCHG // msg_value my_balance in_msg_body in_msg_full |
||||
CTOS // msg_value my_balance in_msg_body cs |
||||
4 LDU // msg_value my_balance in_msg_body flags cs |
||||
SWAP |
||||
1 PUSHINT // msg_value my_balance in_msg_body cs flags _12=1 |
||||
AND // msg_value my_balance in_msg_body cs _13 |
||||
IFJMP:<{ // msg_value my_balance in_msg_body cs |
||||
4 BLKDROP // |
||||
}> // msg_value my_balance in_msg_body cs |
||||
LDMSGADDR // msg_value my_balance in_msg_body sender_address cs |
||||
LDMSGADDR // msg_value my_balance in_msg_body sender_address _238 _237 |
||||
NIP // msg_value my_balance in_msg_body sender_address cs |
||||
LDVARUINT16 // msg_value my_balance in_msg_body sender_address _240 _239 |
||||
NIP // msg_value my_balance in_msg_body sender_address cs |
||||
1 PUSHINT // msg_value my_balance in_msg_body sender_address cs _22=1 |
||||
SDSKIPFIRST // msg_value my_balance in_msg_body sender_address cs |
||||
LDVARUINT16 // msg_value my_balance in_msg_body sender_address _242 _241 |
||||
NIP // msg_value my_balance in_msg_body sender_address cs |
||||
LDVARUINT16 // msg_value my_balance in_msg_body sender_address _244 _243 |
||||
DROP // msg_value my_balance in_msg_body sender_address fwd_fee |
||||
load_data CALLDICT // msg_value my_balance in_msg_body sender_address fwd_fee _245 _246 _247 _248 _249 _250 _251 _252 |
||||
DROP // msg_value my_balance in_msg_body sender_address fwd_fee init? index collection_address owner_address content uri domain |
||||
s6 PUSH // msg_value my_balance in_msg_body sender_address fwd_fee init? index collection_address owner_address content uri domain init? |
||||
NOT // msg_value my_balance in_msg_body sender_address fwd_fee init? index collection_address owner_address content uri domain _38 |
||||
IFJMP:<{ // msg_value my_balance in_msg_body sender_address fwd_fee init? index collection_address owner_address content uri domain |
||||
4 BLKDROP |
||||
s2 POP |
||||
s5 POP // msg_value index in_msg_body sender_address fwd_fee collection_address |
||||
s0 s2 PUXC // msg_value index in_msg_body collection_address fwd_fee collection_address sender_address |
||||
SDEQ // msg_value index in_msg_body collection_address fwd_fee _40 |
||||
405 THROWIFNOT |
||||
s0 s2 XCHG // msg_value index fwd_fee collection_address in_msg_body |
||||
LDMSGADDR // msg_value index fwd_fee collection_address from_address in_msg_body |
||||
LDREF // msg_value index fwd_fee collection_address from_address domain in_msg_body |
||||
LDREF // msg_value index fwd_fee collection_address from_address domain _258 _257 |
||||
DROP // msg_value index fwd_fee collection_address from_address domain _49 |
||||
CTOS // msg_value index fwd_fee collection_address from_address domain attachment |
||||
LDREF // msg_value index fwd_fee collection_address from_address domain uri attachment |
||||
LDREF // msg_value index fwd_fee collection_address from_address domain uri img_uri attachment |
||||
LDREF // msg_value index fwd_fee collection_address from_address domain uri img_uri name attachment |
||||
LDREF // msg_value index fwd_fee collection_address from_address domain uri img_uri name _266 _265 |
||||
DROP // msg_value index fwd_fee collection_address from_address domain uri img_uri name description |
||||
NEWDICT // msg_value index fwd_fee collection_address from_address domain uri img_uri name description content_dict |
||||
s1 s3 XCHG |
||||
43884663033947008978309661017057008345326326811558777475113826163084742639165 PUSHINT |
||||
SWAP |
||||
8 PUSHPOW2 // msg_value index fwd_fee collection_address from_address domain uri description name img_uri _67=43884663033947008978309661017057008345326326811558777475113826163084742639165 content_dict _68=256 |
||||
DICTUSETREF // msg_value index fwd_fee collection_address from_address domain uri description name content_dict |
||||
59089242681608890680090686026688704441792375738894456860693970539822503415433 PUSHINT // msg_value index fwd_fee collection_address from_address domain uri description name content_dict _71=59089242681608890680090686026688704441792375738894456860693970539822503415433 |
||||
SWAP |
||||
8 PUSHPOW2 // msg_value index fwd_fee collection_address from_address domain uri description name _71=59089242681608890680090686026688704441792375738894456860693970539822503415433 content_dict _72=256 |
||||
DICTUSETREF // msg_value index fwd_fee collection_address from_address domain uri description content_dict |
||||
90922719342317012409671596374183159143637506542604000676488204638996496437508 PUSHINT // msg_value index fwd_fee collection_address from_address domain uri description content_dict _75=90922719342317012409671596374183159143637506542604000676488204638996496437508 |
||||
SWAP |
||||
8 PUSHPOW2 // msg_value index fwd_fee collection_address from_address domain uri description _75=90922719342317012409671596374183159143637506542604000676488204638996496437508 content_dict _76=256 |
||||
DICTUSETREF // msg_value index fwd_fee collection_address from_address domain uri content_dict |
||||
0 PUSHINT // msg_value index fwd_fee collection_address from_address domain uri content_dict _79=0 |
||||
NEWC // msg_value index fwd_fee collection_address from_address domain uri content_dict _79=0 _80 |
||||
8 STU // msg_value index fwd_fee collection_address from_address domain uri content_dict _82 |
||||
STDICT // msg_value index fwd_fee collection_address from_address domain uri _83 |
||||
ENDC // msg_value index fwd_fee collection_address from_address domain uri content |
||||
s4 PUSH |
||||
s5 s7 XCHG |
||||
s0 s4 XCHG |
||||
s2 s3 XCHG2 |
||||
NOW // msg_value collection_address fwd_fee index collection_address from_address content uri domain _85 |
||||
store_data CALLDICT |
||||
s1 s2 XCHG // collection_address msg_value fwd_fee |
||||
SUB // collection_address _88 |
||||
500000000 PUSHINT // collection_address _88 _89 |
||||
SUB // collection_address rest_amount |
||||
DUP // collection_address rest_amount rest_amount |
||||
0 GTINT // collection_address rest_amount _92 |
||||
IF:<{ // collection_address rest_amount |
||||
0xd53276db PUSHINT // collection_address rest_amount _93 |
||||
0 PUSHINT // collection_address rest_amount _93 _94=0 |
||||
PUSHNULL // collection_address rest_amount _93 _94=0 _95 |
||||
1 PUSHINT // collection_address rest_amount _93 _94=0 _95 _96=1 |
||||
send_msg INLINECALLDICT |
||||
}>ELSE<{ |
||||
2DROP // |
||||
}> |
||||
}> // msg_value my_balance in_msg_body sender_address fwd_fee init? index collection_address owner_address content uri domain |
||||
s11 POP // domain my_balance in_msg_body sender_address fwd_fee init? index collection_address owner_address content uri |
||||
s3 s7 PUSH2 // domain my_balance in_msg_body sender_address fwd_fee init? index collection_address owner_address content uri collection_address sender_address |
||||
SDEQ // domain my_balance in_msg_body sender_address fwd_fee init? index collection_address owner_address content uri _98 |
||||
s1 s6 XCHG // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content init? _98 |
||||
AND // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content _99 |
||||
IFJMP:<{ // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content |
||||
s7 s9 XCHG |
||||
9 BLKDROP // in_msg_body |
||||
LDMSGADDR // _268 _267 |
||||
DROP // from_address |
||||
0 PUSHINT // from_address _103=0 |
||||
DUP // from_address _103=0 _104=0 |
||||
LTIME // from_address _103=0 _104=0 _105 |
||||
PUSHNULL // from_address _103=0 _104=0 _105 _106 |
||||
64 PUSHINT // from_address _103=0 _104=0 _105 _106 _107=64 |
||||
send_msg INLINECALLDICT |
||||
}> // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content |
||||
s7 PUSH // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content in_msg_body |
||||
SEMPTY // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content _110 |
||||
IF:<{ // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content |
||||
0 PUSHINT // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content _111=0 |
||||
}>ELSE<{ // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content |
||||
s0 s7 XCHG // domain my_balance content sender_address fwd_fee uri index collection_address owner_address in_msg_body |
||||
32 LDU // domain my_balance content sender_address fwd_fee uri index collection_address owner_address _111 in_msg_body |
||||
s8 s8 XCHG2 // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content _111 |
||||
}> // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content op |
||||
DUP // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content op op |
||||
0 EQINT // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content op _117 |
||||
IFJMP:<{ // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content op |
||||
DROP |
||||
s5 POP |
||||
s5 POP |
||||
s5 POP |
||||
s5 POP // domain index collection_address owner_address content uri |
||||
5 ROLL |
||||
NOW // index collection_address owner_address content uri domain _118 |
||||
store_data CALLDICT |
||||
}> // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content op |
||||
s0 s8 XCHG // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content in_msg_body |
||||
64 LDU // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id in_msg_body |
||||
0x5fcc3d14 PUSHINT // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id in_msg_body _124 |
||||
s10 s(-1) PUXC // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id in_msg_body op _124 |
||||
EQUAL // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id in_msg_body _125 |
||||
IFJMP:<{ // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id in_msg_body |
||||
s9 POP // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content query_id |
||||
s7 s2 PUSH2 // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content query_id sender_address owner_address |
||||
SDEQ // domain my_balance in_msg_body sender_address fwd_fee uri index collection_address owner_address content query_id _127 |
||||
401 THROWIFNOT |
||||
s9 s10 XCHG |
||||
s4 s9 XCHG |
||||
s3 s8 XCHG |
||||
s7 s6 s0 XCHG3 |
||||
s4 s1 s3 XCHG3 |
||||
s0 s2 XCHG // my_balance index collection_address owner_address content uri sender_address query_id in_msg_body fwd_fee domain |
||||
transfer_ownership INLINECALLDICT |
||||
}> // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id in_msg_body |
||||
0x1a0b9d51 PUSHINT // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id in_msg_body _130 |
||||
s10 s(-1) PUXC // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id in_msg_body op _130 |
||||
EQUAL // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id in_msg_body _131 |
||||
IFJMP:<{ // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id in_msg_body |
||||
s6 POP |
||||
2DROP |
||||
s4 POP |
||||
s5 POP |
||||
s5 POP // domain index collection_address sender_address owner_address in_msg_body |
||||
s2 s1 XCPU // domain index collection_address in_msg_body owner_address sender_address owner_address |
||||
SDEQ // domain index collection_address in_msg_body owner_address _133 |
||||
410 THROWIFNOT |
||||
SWAP // domain index collection_address owner_address in_msg_body |
||||
LDREF // domain index collection_address owner_address _135 in_msg_body |
||||
LDREF // domain index collection_address owner_address _135 _276 _275 |
||||
DROP // domain index collection_address owner_address _135 _137 |
||||
5 ROLL |
||||
NOW // index collection_address owner_address _135 _137 domain _139 |
||||
store_data CALLDICT |
||||
}> // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id in_msg_body |
||||
s9 PUSH |
||||
1320284409 PUSHINT // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id in_msg_body op _141=1320284409 |
||||
EQUAL // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id in_msg_body _142 |
||||
IFJMP:<{ // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id in_msg_body |
||||
NIP |
||||
s6 POP |
||||
s7 POP |
||||
s7 POP // domain owner_address content sender_address in_msg_body uri index collection_address |
||||
s4 s6 XCPU // domain owner_address content collection_address in_msg_body uri index sender_address owner_address |
||||
SDEQ // domain owner_address content collection_address in_msg_body uri index _144 |
||||
411 THROWIFNOT |
||||
s0 s2 XCHG // domain owner_address content collection_address index uri in_msg_body |
||||
256 LDU // domain owner_address content collection_address index uri key in_msg_body |
||||
DUP // domain owner_address content collection_address index uri key in_msg_body in_msg_body |
||||
SREFS // domain owner_address content collection_address index uri key in_msg_body _151 |
||||
0 GTINT // domain owner_address content collection_address index uri key in_msg_body has_value |
||||
s0 s6 XCHG // domain owner_address has_value collection_address index uri key in_msg_body content |
||||
CTOS // domain owner_address has_value collection_address index uri key in_msg_body cs |
||||
8 LDU // domain owner_address has_value collection_address index uri key in_msg_body _157 cs |
||||
SWAP // domain owner_address has_value collection_address index uri key in_msg_body cs _157 |
||||
0 EQINT // domain owner_address has_value collection_address index uri key in_msg_body cs _161 |
||||
412 THROWIFNOT |
||||
LDDICT // domain owner_address has_value collection_address index uri key in_msg_body _282 _281 |
||||
DROP // domain owner_address has_value collection_address index uri key in_msg_body keyvalue_map |
||||
s0 s6 XCHG // domain owner_address keyvalue_map collection_address index uri key in_msg_body has_value |
||||
IF:<{ // domain owner_address keyvalue_map collection_address index uri key in_msg_body |
||||
LDREF // domain owner_address keyvalue_map collection_address index uri key _284 _283 |
||||
DROP // domain owner_address keyvalue_map collection_address index uri key value |
||||
s0 s1 s5 XCHG3 |
||||
8 PUSHPOW2 // domain owner_address uri collection_address index value key keyvalue_map _170=256 |
||||
DICTUSETREF // domain owner_address uri collection_address index keyvalue_map |
||||
}>ELSE<{ // domain owner_address keyvalue_map collection_address index uri key in_msg_body |
||||
DROP // domain owner_address keyvalue_map collection_address index uri key |
||||
s0 s4 XCHG2 |
||||
8 PUSHPOW2 // domain owner_address uri collection_address index key keyvalue_map _173=256 |
||||
DICTUDEL // domain owner_address uri collection_address index _285 _286 |
||||
DROP // domain owner_address uri collection_address index keyvalue_map |
||||
}> |
||||
0 PUSHINT // domain owner_address uri collection_address index keyvalue_map _175=0 |
||||
NEWC // domain owner_address uri collection_address index keyvalue_map _175=0 _176 |
||||
8 STU // domain owner_address uri collection_address index keyvalue_map _178 |
||||
STDICT // domain owner_address uri collection_address index _179 |
||||
ENDC // domain owner_address uri collection_address index content |
||||
s0 s1 s4 XCHG3 |
||||
s3 s3 XCHG2 |
||||
s0 s5 XCHG |
||||
NOW // index collection_address owner_address content uri domain _181 |
||||
store_data CALLDICT |
||||
}> // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id in_msg_body |
||||
DROP // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id |
||||
s8 PUSH |
||||
1153347137 PUSHINT // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id op _183=1153347137 |
||||
EQUAL // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id _184 |
||||
IFJMP:<{ // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id |
||||
s8 POP // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content |
||||
80 PUSHINT // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content _186=80 |
||||
CONFIGOPTPARAM // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content _187 |
||||
CTOS // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content cs |
||||
LDDICT // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content _288 _287 |
||||
DROP // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content config |
||||
s4 s(-1) PUXC |
||||
8 PUSHPOW2 // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content index config _194=256 |
||||
DICTUGET |
||||
NULLSWAPIFNOT // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content config_value found |
||||
415 THROWIFNOT |
||||
8 LDU // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content config_op config_value |
||||
OVER // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content config_op config_value config_op |
||||
0 EQINT // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content config_op config_value _204 |
||||
s2 PUSH // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content config_op config_value _204 config_op |
||||
1 EQINT // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content config_op config_value _204 _206 |
||||
OR // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content config_op config_value _207 |
||||
416 THROWIFNOT |
||||
OVER // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content config_op config_value config_op |
||||
0 EQINT // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content config_op config_value _210 |
||||
IF:<{ // domain my_balance query_id sender_address fwd_fee uri index collection_address owner_address content config_op config_value |
||||
s4 PUSH |
||||
s9 s11 XCHG |
||||
s6 s8 XCHG |
||||
s0 s7 XCHG |
||||
s4 s6 XCHG |
||||
s3 s5 XCHG |
||||
s4 s10 XCPU |
||||
s4 s12 XCHG |
||||
s0 s3 XCHG |
||||
s0 s13 XCHG // config_op collection_address query_id my_balance index collection_address owner_address content uri sender_address query_id config_value fwd_fee domain |
||||
transfer_ownership INLINECALLDICT |
||||
s1 s2 XCHG // collection_address config_op query_id |
||||
}>ELSE<{ |
||||
DROP |
||||
s3 s10 XCHG |
||||
s9 POP |
||||
7 BLKDROP // collection_address config_op query_id |
||||
}> |
||||
SWAP // collection_address query_id config_op |
||||
1 EQINT // collection_address query_id _213 |
||||
IF:<{ // collection_address query_id |
||||
0 PUSHINT // collection_address query_id _214=0 |
||||
923790417 PUSHINT |
||||
ROT |
||||
PUSHNULL |
||||
160 PUSHINT // collection_address _214=0 _215=923790417 query_id _216 _219 |
||||
send_msg INLINECALLDICT |
||||
}>ELSE<{ |
||||
2DROP // |
||||
}> |
||||
}> // domain my_balance op sender_address fwd_fee uri index collection_address owner_address content query_id |
||||
s5 POP |
||||
2DROP |
||||
s3 POP |
||||
s5 POP |
||||
s5 POP // query_id index op sender_address collection_address |
||||
0x2fcb26a2 PUSHINT // query_id index op sender_address collection_address _221 |
||||
s1 s3 XCHG // query_id index collection_address sender_address op _221 |
||||
EQUAL // query_id index collection_address sender_address _222 |
||||
IFJMP:<{ // query_id index collection_address sender_address |
||||
0 PUSHINT // query_id index collection_address sender_address _223=0 |
||||
0x8b771735 PUSHINT // query_id index collection_address sender_address _223=0 _224 |
||||
s0 s4 XCHG |
||||
NEWC // query_id _224 collection_address sender_address _223=0 index _225 |
||||
256 STU // query_id _224 collection_address sender_address _223=0 _227 |
||||
s0 s3 XCHG2 // query_id _224 _223=0 sender_address _227 collection_address |
||||
STSLICER // query_id _224 _223=0 sender_address _228 |
||||
4 1 REVERSE |
||||
64 PUSHINT // sender_address _223=0 _224 query_id _228 _229=64 |
||||
send_msg INLINECALLDICT |
||||
}> // query_id index collection_address sender_address |
||||
4 BLKDROP // |
||||
16 PUSHPOW2DEC // _231=65535 |
||||
THROWANY |
||||
}> |
||||
get_nft_data PROC:<{ |
||||
// |
||||
load_data CALLDICT // _9 _10 _11 _12 _13 _14 _15 _16 |
||||
s2 s3 XCHG |
||||
3 BLKDROP // init? index collection_address owner_address uri |
||||
}> |
||||
get_editor PROC:<{ |
||||
// |
||||
load_data CALLDICT // _9 _10 _11 _12 _13 _14 _15 _16 |
||||
s4 s7 XCHG |
||||
7 BLKDROP // owner_address |
||||
}> |
||||
get_domain PROC:<{ |
||||
// |
||||
load_data CALLDICT // _10 _11 _12 _13 _14 _15 _16 _17 |
||||
s1 s7 XCHG |
||||
7 BLKDROP // domain |
||||
CTOS // _9 |
||||
}> |
||||
get_last_fill_up_time PROC:<{ |
||||
// |
||||
load_data CALLDICT // _9 _10 _11 _12 _13 _14 _15 _16 |
||||
7 1 BLKDROP2 // last_fill_up_time |
||||
}> |
||||
dnsresolve PROC:<{ |
||||
// subdomain category |
||||
OVER // subdomain category subdomain |
||||
SBITS // subdomain category subdomain_bits |
||||
DUP |
||||
8 PUSHINT // subdomain category subdomain_bits subdomain_bits _5=8 |
||||
MOD // subdomain category subdomain_bits _6 |
||||
0 EQINT // subdomain category subdomain_bits _8 |
||||
70 THROWIFNOT |
||||
load_data CALLDICT // subdomain category subdomain_bits _49 _50 _51 _52 _53 _54 _55 _56 |
||||
s3 s7 XCHG |
||||
7 BLKDROP // subdomain category subdomain_bits content |
||||
CTOS // subdomain category subdomain_bits cs |
||||
8 LDU // subdomain category subdomain_bits _22 cs |
||||
SWAP // subdomain category subdomain_bits cs _22 |
||||
0 EQINT // subdomain category subdomain_bits cs _26 |
||||
412 THROWIFNOT |
||||
LDDICT // subdomain category subdomain_bits _60 _59 |
||||
DROP // subdomain category subdomain_bits keyvalue_map |
||||
s0 s3 XCHG // keyvalue_map category subdomain_bits subdomain |
||||
8 PLDI // keyvalue_map category subdomain_bits _33 |
||||
0 EQINT // keyvalue_map category subdomain_bits starts_with_zero_byte |
||||
413 THROWIFNOT |
||||
8 GTINT // keyvalue_map category _39 |
||||
IF:<{ // keyvalue_map category |
||||
DROP // keyvalue_map |
||||
11732114750494247458678882651681748623800183221773167493832867265755123357695 PUSHINT // keyvalue_map category=11732114750494247458678882651681748623800183221773167493832867265755123357695 |
||||
}> // keyvalue_map category |
||||
DUP // keyvalue_map category category |
||||
0 EQINT // keyvalue_map category _42 |
||||
IFJMP:<{ // keyvalue_map category |
||||
DROP // keyvalue_map |
||||
8 PUSHINT // keyvalue_map _43=8 |
||||
SWAP // _43=8 keyvalue_map |
||||
}> // keyvalue_map category |
||||
SWAP |
||||
8 PUSHPOW2 // category keyvalue_map _46=256 |
||||
DICTUGETREF // _61 _62 |
||||
DROP // value |
||||
8 PUSHINT // value _48=8 |
||||
SWAP // _48=8 value |
||||
}> |
||||
}END>c |
@ -0,0 +1 @@
|
||||
{"hex":"b5ee9c72c10107010086000d12161b207a860114ff00f4a413f4bcf2c80b0102012003020004f23002014805040005a0734b01aed0edfb6c2220c70094840ff2f0ded31f3001d0d3030171b0915be0fa4030db3c3031c7058e2e82105fcc3d145210ba82101c04412a5220bab19330db31e08210140aec515210ba9330db31e082104eb110a9ba309130e2060014ed44d0fa40fa40fa403007143f6e"} |
@ -0,0 +1,136 @@
|
||||
"Asm.fif" include |
||||
// automatically generated from `contracts/wrapper.fc` incl:`contracts/imports/stdlib.fc` incl:`contracts/imports/constants.fc` incl:`contracts/imports/utils.fc` incl:`contracts/imports/op-codes.fc` |
||||
PROGRAM{ |
||||
DECLPROC send_grams |
||||
DECLPROC load_data |
||||
DECLPROC store_data |
||||
DECLPROC recv_internal |
||||
DECLPROC send_msg |
||||
DECLPROC recv_external |
||||
80293 DECLMETHOD get_owner |
||||
send_grams PROC:<{ |
||||
// address amount |
||||
0 PUSHINT // address amount _3=0 |
||||
24 PUSHINT // address amount _3=0 _4=24 |
||||
NEWC // address amount _3=0 _4=24 _5 |
||||
6 STU // address amount _3=0 _7 |
||||
s0 s3 XCHG2 // _3=0 amount _7 address |
||||
STSLICER // _3=0 amount _8 |
||||
SWAP // _3=0 _8 amount |
||||
STGRAMS // _3=0 _9 |
||||
107 STU // _11 |
||||
ENDC // msg |
||||
3 PUSHINT // msg _13=3 |
||||
SENDRAWMSG |
||||
}> |
||||
load_data PROCREF:<{ |
||||
// |
||||
c4 PUSH // _1 |
||||
CTOS // ds |
||||
LDMSGADDR // target ds |
||||
LDMSGADDR // target owner ds |
||||
LDMSGADDR // target owner _17 _16 |
||||
DROP // target owner agorata |
||||
}> |
||||
store_data PROCREF:<{ |
||||
// target owner agorata |
||||
NEWC // target owner agorata _3 |
||||
s0 s3 XCHG2 // agorata owner _3 target |
||||
STSLICER // agorata owner _4 |
||||
SWAP // agorata _4 owner |
||||
STSLICER // agorata _5 |
||||
SWAP // _5 agorata |
||||
STSLICER // _6 |
||||
ENDC // _7 |
||||
c4 POP |
||||
}> |
||||
recv_internal PROC:<{ |
||||
SAMEALTSAVE // my_balance msg_value in_msg_full in_msg_body |
||||
2 2 BLKDROP2 // in_msg_full in_msg_body |
||||
DUP // in_msg_full in_msg_body in_msg_body |
||||
SEMPTY // in_msg_full in_msg_body _4 |
||||
IF:<{ // in_msg_full in_msg_body |
||||
16 PUSHPOW2DEC // in_msg_full in_msg_body _5=65535 |
||||
THROWANY |
||||
}> // in_msg_full in_msg_body |
||||
32 LDU // in_msg_full _37 _36 |
||||
DROP // in_msg_full op |
||||
SWAP // op in_msg_full |
||||
CTOS // op cs |
||||
4 LDU // op flags cs |
||||
SWAP |
||||
1 PUSHINT // op cs flags _17=1 |
||||
AND // op cs _18 |
||||
IFJMP:<{ // op cs |
||||
2DROP // |
||||
}> // op cs |
||||
LDMSGADDR // op _41 _40 |
||||
DROP // op sender_address |
||||
load_data INLINECALLDICT // op sender_address _42 _43 _44 |
||||
DROP |
||||
NIP // op sender_address owner |
||||
SDEQ // op _26 |
||||
IF:<{ // op |
||||
0x5fcc3d14 PUSHINT // op _27 |
||||
s1 s(-1) PUXC // op op _27 |
||||
EQUAL // op _28 |
||||
0x1c04412a PUSHINT // op _28 _29 |
||||
s2 s(-1) PUXC // op _28 op _29 |
||||
EQUAL // op _28 _30 |
||||
OR // op _31 |
||||
IFJMP:<{ // op |
||||
DROP // |
||||
RETALT |
||||
}> // op |
||||
0x140aec51 PUSHINT // op _32 |
||||
s1 s(-1) PUXC // op op _32 |
||||
EQUAL // op _33 |
||||
IFJMP:<{ // op |
||||
DROP // |
||||
RETALT |
||||
}> // op |
||||
0x4eb110a9 PUSHINT // op _34 |
||||
EQUAL // _35 |
||||
DROP // |
||||
}>ELSE<{ |
||||
DROP // |
||||
}> |
||||
}> |
||||
send_msg PROCINLINE:<{ |
||||
// to_address amount op query_id payload send_mode |
||||
0 PUSHINT // to_address amount op query_id payload send_mode _7=0 |
||||
16 PUSHINT // to_address amount op query_id payload send_mode _7=0 _8=16 |
||||
NEWC // to_address amount op query_id payload send_mode _7=0 _8=16 _9 |
||||
6 STU // to_address amount op query_id payload send_mode _7=0 _11 |
||||
s0 s7 XCHG2 // _7=0 amount op query_id payload send_mode _11 to_address |
||||
STSLICER // _7=0 amount op query_id payload send_mode _12 |
||||
s0 s5 XCHG2 // _7=0 send_mode op query_id payload _12 amount |
||||
STVARUINT16 // _7=0 send_mode op query_id payload _13 |
||||
s1 s5 XCHG // payload send_mode op query_id _7=0 _13 |
||||
107 STU // payload send_mode op query_id _27 |
||||
s1 s2 XCHG // payload send_mode query_id op _27 |
||||
32 STU // payload send_mode query_id _29 |
||||
64 STU // payload send_mode msg |
||||
s2 PUSH // payload send_mode msg payload |
||||
ISNULL // payload send_mode msg _32 |
||||
NOT // payload send_mode msg _33 |
||||
IF:<{ // payload send_mode msg |
||||
ROT // send_mode msg payload |
||||
STBR // send_mode msg |
||||
SWAP // msg send_mode |
||||
}>ELSE<{ |
||||
s2 POP // msg send_mode |
||||
}> |
||||
SWAP // send_mode msg |
||||
ENDC // send_mode _35 |
||||
SWAP // _35 send_mode |
||||
SENDRAWMSG |
||||
}> |
||||
recv_external PROC:<{ |
||||
// in_msg_body |
||||
DROP // |
||||
}> |
||||
get_owner PROC:<{ |
||||
// |
||||
}> |
||||
}END>c |
@ -0,0 +1,71 @@
|
||||
import chai, {assert, expect} from "chai"; |
||||
import chaiBN from "chai-bn"; |
||||
import BN from "bn.js"; |
||||
|
||||
chai.use(chaiBN(BN)); |
||||
|
||||
import {Address, beginCell, Builder, Cell, contractAddress, parseDict, parseDictBitString, Slice, toNano} from "ton"; |
||||
import {runContract, SmartContract} from "ton-contract-executor"; |
||||
import * as main from "../contracts/main"; |
||||
import {internalMessage, randomAddress} from "./helpers"; |
||||
|
||||
import {hex as item_code} from "../build/nft-item.compiled.json"; |
||||
import {makeSnakeCell} from "../contracts/utils"; |
||||
import {keyPairFromSeed, KeyPair, sign, keyPairFromSecretKey, sha256} from "ton-crypto"; |
||||
import {signBuy} from "../contracts/main"; |
||||
import {Base64} from "@tonconnect/protocol"; |
||||
|
||||
let data = main.itemDataUninit({domain: "test", collectionAddress: randomAddress("collection")}); |
||||
|
||||
describe("Creating item tests", () => { |
||||
let contract: SmartContract; |
||||
let debug: boolean = true; |
||||
|
||||
beforeEach(async () => { |
||||
contract = await SmartContract.fromCell( |
||||
Cell.fromBoc(item_code)[0], |
||||
data, |
||||
{debug: debug} |
||||
); |
||||
contract.setC7Config({ |
||||
myself: randomAddress("item"), |
||||
balance: toNano(1).toNumber(), |
||||
}) |
||||
}); |
||||
|
||||
it("allows to set the data", async () => { |
||||
let ownerAddr = randomAddress("dude"); |
||||
const initializeMsg = internalMessage({ |
||||
from: randomAddress("collection"), |
||||
body: main.initializeItemMsg({domain: "levcccc", ownerAddr, zone: "example.ton"}), |
||||
value: new BN(0), |
||||
}); |
||||
const res = await contract.sendInternalMessage(initializeMsg); |
||||
|
||||
// let nft_data = await contract.invokeGetMethod("get_nft_data", []);
|
||||
// console.log(nft_data.result);
|
||||
expect(res.type).to.equal("success"); |
||||
expect(res.exit_code).to.equal(0); |
||||
const setDataMsg = internalMessage({ |
||||
from: ownerAddr, |
||||
body: await main.setContent({domain: "levcccc", zone: "example.ton"}), |
||||
value: new BN(toNano(2)), |
||||
}) |
||||
const res2 = await contract.sendInternalMessage(setDataMsg); |
||||
expect(res2.type).to.equal("success"); |
||||
expect(res2.exit_code).to.equal(0); |
||||
let nft_data = await contract.invokeGetMethod("get_nft_data", []); |
||||
console.log('res4', nft_data.result[4]); |
||||
// @ts-ignore
|
||||
console.log(Base64.encode((nft_data.result[4] as Cell).toBoc())) |
||||
// @ts-ignore
|
||||
// let content = (nft_data.result[4] as Cell).beginParse();
|
||||
// let a = parseDict(content, 256, (s) => s);
|
||||
// console.log(a);
|
||||
let resolved = (await contract.invokeGetMethod("dnsresolve", [ |
||||
{type: "cell_slice", value: "te6cckEBAQEAAwAAAgDTZ9xB"}, |
||||
{type: "int", value: new BN(await sha256('uri')).toString()} |
||||
])); |
||||
expect(resolved.type).to.equal("success"); |
||||
}); |
||||
}); |
@ -1,56 +0,0 @@
|
||||
import chai, { assert, expect } from "chai"; |
||||
import chaiBN from "chai-bn"; |
||||
import BN from "bn.js"; |
||||
chai.use(chaiBN(BN)); |
||||
|
||||
import { Builder, Cell, Slice } from "ton"; |
||||
import { SmartContract } from "ton-contract-executor"; |
||||
import * as main from "../contracts/main"; |
||||
import { internalMessage, randomAddress } from "./helpers"; |
||||
|
||||
import { hex } from "../build/main.compiled.json"; |
||||
import { makeSnakeCell } from "../contracts/utils"; |
||||
import { signVerify } from "ton-crypto"; |
||||
|
||||
describe("Selling tests (instant buy)", () => { |
||||
let contract: SmartContract; |
||||
let debug: boolean = true; |
||||
let keyPair = main.genKeyPair(); |
||||
|
||||
beforeEach(async () => { |
||||
contract = await SmartContract.fromCell( |
||||
Cell.fromBoc(hex)[0], |
||||
main.data({ |
||||
ownerAddress: randomAddress("owner"), |
||||
code: Cell.fromBoc(hex)[0], |
||||
collectionAddress: randomAddress("collection"), |
||||
domain: "alice", |
||||
publicKey: keyPair.publicKey |
||||
}), |
||||
{ debug: debug } |
||||
); |
||||
}); |
||||
|
||||
it("Sell", async () => { |
||||
main.setContractBalance(contract, 10 * main.TON()); |
||||
const sellMessage = internalMessage({ |
||||
from: randomAddress("buyer"), |
||||
body: main.instantBuyMessage({ |
||||
receiverAddress: randomAddress("buyer"), |
||||
issuedCollectionAddr: randomAddress("collection"), |
||||
price: 10 * main.TON(), |
||||
domain: "bob", |
||||
privateKey: keyPair.secretKey |
||||
}), |
||||
value: new BN(10 * main.TON()) |
||||
}); |
||||
context("Public key is correct", async () => { |
||||
const pubKeyRes = await contract.invokeGetMethod("get_public_key", []); |
||||
expect(pubKeyRes.result[0]).to.equal(keyPair.publicKey); |
||||
}); |
||||
|
||||
const res = await contract.sendInternalMessage(sellMessage);
|
||||
expect(res.type).to.equal("success"); |
||||
expect(res.exit_code).to.equal(0); |
||||
}); |
||||
}); |
@ -0,0 +1,71 @@
|
||||
import chai, {assert, expect} from "chai"; |
||||
import chaiBN from "chai-bn"; |
||||
import BN from "bn.js"; |
||||
|
||||
chai.use(chaiBN(BN)); |
||||
|
||||
import {Address, Builder, Cell, contractAddress, Slice} from "ton"; |
||||
import {runContract, SmartContract} from "ton-contract-executor"; |
||||
import * as main from "../contracts/main"; |
||||
import {internalMessage, randomAddress} from "./helpers"; |
||||
|
||||
import {hex} from "../build/nft-collection.compiled.json"; |
||||
import {hex as item_code} from "../build/nft-item.compiled.json"; |
||||
import {makeSnakeCell} from "../contracts/utils"; |
||||
import {keyPairFromSeed, KeyPair, sign, keyPairFromSecretKey} from "ton-crypto"; |
||||
import {signBuy} from "../contracts/main"; |
||||
|
||||
let ownerKeys = keyPairFromSeed(Buffer.from("0000000000000000000000000000000000000000000000000000000000000000", "hex")); |
||||
let ownerPubNum = new BN(ownerKeys.publicKey); |
||||
let data = main.collectionData({ |
||||
ownerAddress: randomAddress("owner"), |
||||
code: Cell.fromBoc(item_code)[0], |
||||
ownerKey: ownerPubNum, |
||||
}); |
||||
|
||||
describe("Signing tests", () => { |
||||
let contract: SmartContract; |
||||
let debug: boolean = true; |
||||
|
||||
beforeEach(async () => { |
||||
contract = await SmartContract.fromCell( |
||||
Cell.fromBoc(hex)[0], |
||||
data, |
||||
{debug: debug} |
||||
); |
||||
contract.setC7Config({ |
||||
myself: randomAddress("collection") |
||||
}) |
||||
}); |
||||
|
||||
it("allows to buy an item with a valid signature", async () => { |
||||
main.setContractBalance(contract, 10 * main.TON(), randomAddress("collection")); |
||||
let ownerAddr = randomAddress("dude"); |
||||
let signature = signBuy("test", randomAddress("collection"), ownerAddr, ownerKeys.secretKey); |
||||
const sendToSelfMessage = internalMessage({ |
||||
from: ownerAddr, |
||||
body: main.createItem({domain: "test", signature: signature}), |
||||
value: new BN(100 * main.TON()), |
||||
}); |
||||
const res = await contract.sendInternalMessage(sendToSelfMessage); |
||||
// console.log(res);
|
||||
// let fs = require('fs');
|
||||
// fs.writeFile('logs.txt', res.logs, (_: any) => {});
|
||||
expect(res.type).to.equal("success"); |
||||
expect(res.exit_code).to.equal(0); |
||||
}); |
||||
it("does not allow to buy an item if the signature is for another user", async () => { |
||||
main.setContractBalance(contract, 10 * main.TON(), randomAddress("collection")); |
||||
let signature = signBuy("test", randomAddress("collection"), randomAddress("dude"), ownerKeys.secretKey); |
||||
const sendToSelfMessage = internalMessage({ |
||||
from: randomAddress("dude2"), |
||||
body: main.createItem({domain: "test", signature: signature}), |
||||
value: new BN(100 * main.TON()), |
||||
}); |
||||
const res = await contract.sendInternalMessage(sendToSelfMessage); |
||||
expect(res.type).to.equal("failed"); |
||||
expect(res.exit_code).to.equal(205); |
||||
|
||||
}); |
||||
|
||||
}); |
Loading…
Reference in new issue