@xgamesfun/solana 0.25.0 → 0.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DISCLAIMER.md +1 -1
- package/NOTICE +4 -4
- package/README.md +33 -28
- package/bin/xsolana.mjs +9 -3
- package/examples/stakers-draw.json +1 -0
- package/js/client/random.js +1 -1
- package/js/economy/check.mjs +11 -0
- package/js/economy/cost.mjs +1 -1
- package/js/economy/explain.mjs +10 -3
- package/js/economy/guide.mjs +1 -1
- package/js/economy/live.mjs +2 -1
- package/js/economy/review.mjs +760 -0
- package/js/economy/schema.json +8 -4
- package/js/economy/trust.mjs +15 -0
- package/js/index.js +1 -0
- package/js/mcp/server.mjs +1 -1
- package/js/mcp/tools.mjs +26 -1
- package/js/results/index.js +2 -2
- package/package.json +1 -1
- package/release.json +1 -1
- package/skills/xsolana-economy/SKILL.md +29 -13
- package/skills/xsolana-economy/references/after-launch.md +2 -1
- package/skills/xsolana-economy/references/sentence-to-spec.md +1 -0
- package/skills/xsolana-economy/references/telling-the-person.md +6 -0
- package/skills/xsolana-economy/references/trust-and-cheating.md +126 -0
- package/types/economy/cost.d.mts +1 -1
- package/types/economy/explain.d.mts +3 -0
- package/types/economy/review.d.mts +45 -0
- package/types/economy/trust.d.mts +8 -0
- package/types/index.d.ts +1 -0
- package/types/mcp/tools.d.mts +62 -0
- package/types/play/index.d.ts +6 -6
- package/types/results/index.d.ts +1 -1
- package/examples/holder-den.json +0 -38
- package/examples/holders-drop.json +0 -105
- package/examples/match-predictions.json +0 -24
- package/examples/pack-league.json +0 -108
- package/examples/stride-sneakers.json +0 -164
package/types/play/index.d.ts
CHANGED
|
@@ -735,18 +735,17 @@ export declare function solanaApp({ spec, rpcUrl, rpc, wallet, programs, now, ke
|
|
|
735
735
|
* it (base units, as text). Pass one to `claim`.
|
|
736
736
|
*/
|
|
737
737
|
claims(): Promise<({
|
|
738
|
-
key?: undefined;
|
|
739
738
|
tree?: undefined;
|
|
740
739
|
kind: string;
|
|
741
740
|
order: any;
|
|
742
741
|
says: string;
|
|
743
742
|
hold?: undefined;
|
|
743
|
+
key?: undefined;
|
|
744
744
|
round?: undefined;
|
|
745
745
|
pulls?: undefined;
|
|
746
746
|
asset?: undefined;
|
|
747
747
|
table?: undefined;
|
|
748
748
|
} | {
|
|
749
|
-
key?: undefined;
|
|
750
749
|
tree?: undefined;
|
|
751
750
|
order?: undefined;
|
|
752
751
|
kind: string;
|
|
@@ -756,29 +755,30 @@ export declare function solanaApp({ spec, rpcUrl, rpc, wallet, programs, now, ke
|
|
|
756
755
|
potUnits?: string | undefined;
|
|
757
756
|
prizeUnits?: string | undefined;
|
|
758
757
|
hold?: undefined;
|
|
758
|
+
key?: undefined;
|
|
759
759
|
round?: undefined;
|
|
760
760
|
pulls?: undefined;
|
|
761
761
|
asset?: undefined;
|
|
762
762
|
table?: undefined;
|
|
763
763
|
} | {
|
|
764
|
-
key?: undefined;
|
|
765
764
|
tree?: undefined;
|
|
766
765
|
order?: undefined;
|
|
767
766
|
kind: string;
|
|
768
767
|
asset: any;
|
|
769
768
|
hold: any;
|
|
770
769
|
says: string;
|
|
770
|
+
key?: undefined;
|
|
771
771
|
round?: undefined;
|
|
772
772
|
pulls?: undefined;
|
|
773
773
|
table?: undefined;
|
|
774
774
|
} | {
|
|
775
|
-
key?: undefined;
|
|
776
775
|
order?: undefined;
|
|
777
776
|
hold?: undefined;
|
|
778
777
|
kind: string;
|
|
779
778
|
asset: string;
|
|
780
779
|
tree: string;
|
|
781
780
|
says: string;
|
|
781
|
+
key?: undefined;
|
|
782
782
|
round?: undefined;
|
|
783
783
|
pulls?: undefined;
|
|
784
784
|
table?: undefined;
|
|
@@ -816,10 +816,10 @@ export declare function solanaApp({ spec, rpcUrl, rpc, wallet, programs, now, ke
|
|
|
816
816
|
asset?: undefined;
|
|
817
817
|
table?: undefined;
|
|
818
818
|
} | {
|
|
819
|
-
key?: undefined;
|
|
820
819
|
tree?: undefined;
|
|
821
820
|
order?: undefined;
|
|
822
821
|
hold?: undefined;
|
|
822
|
+
key?: undefined;
|
|
823
823
|
round?: undefined;
|
|
824
824
|
pulls?: undefined;
|
|
825
825
|
kind: string;
|
|
@@ -827,10 +827,10 @@ export declare function solanaApp({ spec, rpcUrl, rpc, wallet, programs, now, ke
|
|
|
827
827
|
says: string;
|
|
828
828
|
table?: undefined;
|
|
829
829
|
} | {
|
|
830
|
-
key?: undefined;
|
|
831
830
|
tree?: undefined;
|
|
832
831
|
order?: undefined;
|
|
833
832
|
hold?: undefined;
|
|
833
|
+
key?: undefined;
|
|
834
834
|
round?: undefined;
|
|
835
835
|
pulls?: undefined;
|
|
836
836
|
asset?: undefined;
|
package/types/results/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { canonicalJson, CERT_KINDS, CLUSTERS, drawText, entryText, giveawayHostText, hostCertText, lockText, NO_GRANT, RESULT_DOMAIN, resultBytes, revokeGiveawayText, revokeText, rosterHash, } from './wire.js';
|
|
2
|
-
/**
|
|
2
|
+
/** xgames.fun's results server, on its play host (devnet until the program's audit). */
|
|
3
3
|
export declare const RESULTS_SERVER = "https://play.xgames.fun/xsolana";
|
|
4
4
|
/** A fresh round id: 16 random bytes, in hex. Make it when the round starts. */
|
|
5
5
|
export declare const newRound: () => string;
|
package/examples/holder-den.json
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 2,
|
|
3
|
-
"network": "devnet",
|
|
4
|
-
"name": "Holder Den",
|
|
5
|
-
"prompt": "Holders of our NFT collection stake them without the NFT leaving their wallet and earn 10 DUST a day each. Locking for 30 days doubles it, 90 days triples it. NFTs with a gold background earn 25% more. Every day staked adds a point to the NFT, which the game shows as its rank.",
|
|
6
|
-
"currency": "dust",
|
|
7
|
-
"tokens": [{ "key": "dust", "source": "project", "name": "Den Dust", "symbol": "DUST", "decimals": 6 }],
|
|
8
|
-
"collection": false,
|
|
9
|
-
"farms": [
|
|
10
|
-
{
|
|
11
|
-
"key": "den",
|
|
12
|
-
"name": "The Den",
|
|
13
|
-
"stakes": "collectibles",
|
|
14
|
-
"custody": "freeze",
|
|
15
|
-
"gate": { "collection": "5N3f6KXYGvtX4zCVD3DeQoEGbzahifQiFtkxfTfEyiRz" },
|
|
16
|
-
"rewards": "dust",
|
|
17
|
-
"rate": { "perDay": 10, "minted": true },
|
|
18
|
-
"tiers": [
|
|
19
|
-
{ "lock": "0d", "multiplier": 1 },
|
|
20
|
-
{ "lock": "30d", "multiplier": 2 },
|
|
21
|
-
{ "lock": "90d", "multiplier": 3 }
|
|
22
|
-
],
|
|
23
|
-
"boosts": [
|
|
24
|
-
{
|
|
25
|
-
"when": {
|
|
26
|
-
"collection": "5N3f6KXYGvtX4zCVD3DeQoEGbzahifQiFtkxfTfEyiRz",
|
|
27
|
-
"attribute": "Background",
|
|
28
|
-
"equals": "Gold"
|
|
29
|
-
},
|
|
30
|
-
"add": { "addPercent": 25 }
|
|
31
|
-
}
|
|
32
|
-
],
|
|
33
|
-
"maxBoostPercent": 25,
|
|
34
|
-
"growth": { "attribute": "points", "perDay": 1 }
|
|
35
|
-
}
|
|
36
|
-
],
|
|
37
|
-
"scenario": { "days": 90, "perDay": { "farm:den": 30 }, "staked": { "den": 1500 } }
|
|
38
|
-
}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 2,
|
|
3
|
-
"network": "devnet",
|
|
4
|
-
"name": "Holders Drop",
|
|
5
|
-
"prompt": "Only holders of our collection get in. They buy a holders' crate for 0.02 SOL with a chance at a limited relic, claim a free holder badge once, and enter a raffle for our one-of-one NFT at 0.005 SOL a ticket. The raffle draws in a week, and only if at least 50 tickets sold; the ticket money goes to the treasury.",
|
|
6
|
-
"currency": "sol",
|
|
7
|
-
"tokens": [
|
|
8
|
-
{
|
|
9
|
-
"key": "sol",
|
|
10
|
-
"source": "sol"
|
|
11
|
-
}
|
|
12
|
-
],
|
|
13
|
-
"collection": {
|
|
14
|
-
"name": "Holders Drop"
|
|
15
|
-
},
|
|
16
|
-
"items": [
|
|
17
|
-
{
|
|
18
|
-
"key": "trinket",
|
|
19
|
-
"name": "Holder Trinket",
|
|
20
|
-
"rarity": "Common"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"key": "relic",
|
|
24
|
-
"name": "Holder Relic",
|
|
25
|
-
"rarity": "Epic",
|
|
26
|
-
"supply": 50
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"key": "badge",
|
|
30
|
-
"name": "Holder Badge",
|
|
31
|
-
"soulbound": true
|
|
32
|
-
}
|
|
33
|
-
],
|
|
34
|
-
"boxes": [
|
|
35
|
-
{
|
|
36
|
-
"key": "crate",
|
|
37
|
-
"name": "Holders' Crate",
|
|
38
|
-
"price": 0.02,
|
|
39
|
-
"gate": {
|
|
40
|
-
"collection": "9gyC3T5ynfwHK2EwKrxvmayntaDXjgcbLTaPwMwdeYuh"
|
|
41
|
-
},
|
|
42
|
-
"perWalletEach": {
|
|
43
|
-
"count": 3,
|
|
44
|
-
"every": "1d"
|
|
45
|
-
},
|
|
46
|
-
"outcomes": [
|
|
47
|
-
{
|
|
48
|
-
"gives": "item",
|
|
49
|
-
"item": "trinket",
|
|
50
|
-
"chance": 95
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
"gives": "item",
|
|
54
|
-
"item": "relic",
|
|
55
|
-
"chance": 5
|
|
56
|
-
}
|
|
57
|
-
]
|
|
58
|
-
}
|
|
59
|
-
],
|
|
60
|
-
"grants": [
|
|
61
|
-
{
|
|
62
|
-
"key": "badge",
|
|
63
|
-
"name": "Holder Badge",
|
|
64
|
-
"prize": {
|
|
65
|
-
"gives": "item",
|
|
66
|
-
"item": "badge"
|
|
67
|
-
},
|
|
68
|
-
"gate": {
|
|
69
|
-
"collection": "9gyC3T5ynfwHK2EwKrxvmayntaDXjgcbLTaPwMwdeYuh"
|
|
70
|
-
},
|
|
71
|
-
"limits": {
|
|
72
|
-
"perWallet": 1,
|
|
73
|
-
"total": 2000
|
|
74
|
-
},
|
|
75
|
-
"wallets": 2000,
|
|
76
|
-
"fund": 0.2
|
|
77
|
-
}
|
|
78
|
-
],
|
|
79
|
-
"lotteries": [
|
|
80
|
-
{
|
|
81
|
-
"key": "raffle",
|
|
82
|
-
"name": "One-of-one raffle",
|
|
83
|
-
"price": 0.005,
|
|
84
|
-
"raffle": {
|
|
85
|
-
"nft": "2oguAYJzxA6isSBtu4b8kzNPExdnvCuSwKjnB9dRkdxg",
|
|
86
|
-
"collection": "9gyC3T5ynfwHK2EwKrxvmayntaDXjgcbLTaPwMwdeYuh"
|
|
87
|
-
},
|
|
88
|
-
"minSold": 50,
|
|
89
|
-
"firstDraw": "publish+7d",
|
|
90
|
-
"gate": {
|
|
91
|
-
"collection": "9gyC3T5ynfwHK2EwKrxvmayntaDXjgcbLTaPwMwdeYuh"
|
|
92
|
-
},
|
|
93
|
-
"perWallet": 20,
|
|
94
|
-
"rest": "treasury"
|
|
95
|
-
}
|
|
96
|
-
],
|
|
97
|
-
"scenario": {
|
|
98
|
-
"days": 7,
|
|
99
|
-
"perDay": {
|
|
100
|
-
"box:crate": 60,
|
|
101
|
-
"grant:badge": 100,
|
|
102
|
-
"lottery:raffle": 40
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 2,
|
|
3
|
-
"network": "devnet",
|
|
4
|
-
"name": "Match Predictions",
|
|
5
|
-
"prompt": "A prediction pool for each match: back home, draw or away with any amount of SOL. Entries close two days after it opens, and the result is due a day later or everyone gets their money back. Winners share the pot by stake, after a 5% rake to the treasury. Our results server signs the result.",
|
|
6
|
-
"currency": "sol",
|
|
7
|
-
"tokens": [{ "key": "sol", "source": "sol" }],
|
|
8
|
-
"collection": false,
|
|
9
|
-
"contests": [
|
|
10
|
-
{
|
|
11
|
-
"key": "match",
|
|
12
|
-
"name": "Match pool",
|
|
13
|
-
"sides": 3,
|
|
14
|
-
"sideNames": ["Home", "Draw", "Away"],
|
|
15
|
-
"entriesClose": "2d",
|
|
16
|
-
"resultDue": "3d",
|
|
17
|
-
"every": "1d",
|
|
18
|
-
"split": [{ "to": "treasury", "percent": 5 }],
|
|
19
|
-
"decidedBy": "the results server, from the match's final score",
|
|
20
|
-
"deciders": ["GnUcZZf8bwSCj8CFkdVPeeu81ptCV4RxQvExdKjvStyd"]
|
|
21
|
-
}
|
|
22
|
-
],
|
|
23
|
-
"scenario": { "days": 30, "perDay": { "contest:match": 150 } }
|
|
24
|
-
}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 2,
|
|
3
|
-
"network": "devnet",
|
|
4
|
-
"name": "Pack League",
|
|
5
|
-
"prompt": "A trading card game. A pack is 0.05 SOL for five cards, and the fifth card is always rare or better. A fifth of every pack goes into the weekly league pot. Card holders buy league tickets for 0.001 SOL, and each week the top three share the pot.",
|
|
6
|
-
"currency": "sol",
|
|
7
|
-
"tokens": [
|
|
8
|
-
{
|
|
9
|
-
"key": "sol",
|
|
10
|
-
"source": "sol"
|
|
11
|
-
}
|
|
12
|
-
],
|
|
13
|
-
"collection": {
|
|
14
|
-
"name": "Pack League"
|
|
15
|
-
},
|
|
16
|
-
"items": [
|
|
17
|
-
{
|
|
18
|
-
"key": "common",
|
|
19
|
-
"name": "Common Card",
|
|
20
|
-
"rarity": "Common"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"key": "rare",
|
|
24
|
-
"name": "Rare Card",
|
|
25
|
-
"rarity": "Rare"
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
"key": "epic",
|
|
29
|
-
"name": "Epic Card",
|
|
30
|
-
"rarity": "Epic",
|
|
31
|
-
"supply": 3000
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"key": "legendary",
|
|
35
|
-
"name": "Legendary Card",
|
|
36
|
-
"rarity": "Legendary",
|
|
37
|
-
"supply": 300
|
|
38
|
-
}
|
|
39
|
-
],
|
|
40
|
-
"boxes": [
|
|
41
|
-
{
|
|
42
|
-
"key": "pack",
|
|
43
|
-
"name": "Card Pack",
|
|
44
|
-
"price": 0.05,
|
|
45
|
-
"split": [
|
|
46
|
-
{
|
|
47
|
-
"to": "lottery:league",
|
|
48
|
-
"percent": 20
|
|
49
|
-
}
|
|
50
|
-
],
|
|
51
|
-
"outcomes": [
|
|
52
|
-
{
|
|
53
|
-
"gives": "item",
|
|
54
|
-
"item": "common",
|
|
55
|
-
"chance": 75
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"gives": "item",
|
|
59
|
-
"item": "rare",
|
|
60
|
-
"chance": 19
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"gives": "item",
|
|
64
|
-
"item": "epic",
|
|
65
|
-
"chance": 5
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
"gives": "item",
|
|
69
|
-
"item": "legendary",
|
|
70
|
-
"chance": 1
|
|
71
|
-
}
|
|
72
|
-
],
|
|
73
|
-
"slots": [
|
|
74
|
-
{
|
|
75
|
-
"count": 4,
|
|
76
|
-
"share": 70
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
"count": 1,
|
|
80
|
-
"from": [1, 2, 3],
|
|
81
|
-
"share": 30
|
|
82
|
-
}
|
|
83
|
-
]
|
|
84
|
-
}
|
|
85
|
-
],
|
|
86
|
-
"lotteries": [
|
|
87
|
-
{
|
|
88
|
-
"key": "league",
|
|
89
|
-
"name": "Weekly League",
|
|
90
|
-
"price": 0.001,
|
|
91
|
-
"places": [50, 30, 20],
|
|
92
|
-
"every": "7d",
|
|
93
|
-
"firstDraw": "publish+7d",
|
|
94
|
-
"gate": {
|
|
95
|
-
"item": "common"
|
|
96
|
-
},
|
|
97
|
-
"perWallet": 100,
|
|
98
|
-
"pot": 0
|
|
99
|
-
}
|
|
100
|
-
],
|
|
101
|
-
"scenario": {
|
|
102
|
-
"days": 28,
|
|
103
|
-
"perDay": {
|
|
104
|
-
"box:pack": 100,
|
|
105
|
-
"lottery:league": 200
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 2,
|
|
3
|
-
"network": "devnet",
|
|
4
|
-
"name": "Stride Sneakers",
|
|
5
|
-
"prompt": "A move-to-earn game. Players buy a shoebox for 0.1 SOL and get a sneaker with random efficiency and luck, or a rare golden one. Walking earns STRIDE: the app's server vouches for a day's steps, once a day per wallet. Two sneakers and 200 STRIDE mint a new shoebox, at most 7 times per sneaker. 50 STRIDE levels a sneaker up, to level 30. Sneakers can be rented out from the app.",
|
|
6
|
-
"currency": "sol",
|
|
7
|
-
"tokens": [
|
|
8
|
-
{
|
|
9
|
-
"key": "sol",
|
|
10
|
-
"source": "sol"
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
"key": "stride",
|
|
14
|
-
"source": "project",
|
|
15
|
-
"name": "Stride",
|
|
16
|
-
"symbol": "STRIDE",
|
|
17
|
-
"decimals": 6
|
|
18
|
-
}
|
|
19
|
-
],
|
|
20
|
-
"collection": {
|
|
21
|
-
"name": "Stride Sneakers"
|
|
22
|
-
},
|
|
23
|
-
"items": [
|
|
24
|
-
{
|
|
25
|
-
"key": "sneaker",
|
|
26
|
-
"name": "Sneaker",
|
|
27
|
-
"drawn": [
|
|
28
|
-
{
|
|
29
|
-
"attribute": "efficiency",
|
|
30
|
-
"min": 1,
|
|
31
|
-
"max": 10
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"attribute": "luck",
|
|
35
|
-
"min": 1,
|
|
36
|
-
"max": 10
|
|
37
|
-
}
|
|
38
|
-
]
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"key": "golden",
|
|
42
|
-
"name": "Golden Sneaker",
|
|
43
|
-
"rarity": "Legendary",
|
|
44
|
-
"supply": 100
|
|
45
|
-
}
|
|
46
|
-
],
|
|
47
|
-
"boxes": [
|
|
48
|
-
{
|
|
49
|
-
"key": "shoebox",
|
|
50
|
-
"name": "Shoebox",
|
|
51
|
-
"price": 0.1,
|
|
52
|
-
"outcomes": [
|
|
53
|
-
{
|
|
54
|
-
"gives": "item",
|
|
55
|
-
"item": "sneaker",
|
|
56
|
-
"chance": 98
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
"gives": "item",
|
|
60
|
-
"item": "golden",
|
|
61
|
-
"chance": 2
|
|
62
|
-
}
|
|
63
|
-
]
|
|
64
|
-
}
|
|
65
|
-
],
|
|
66
|
-
"recipes": [
|
|
67
|
-
{
|
|
68
|
-
"key": "mint",
|
|
69
|
-
"name": "Mint a shoebox",
|
|
70
|
-
"in": [
|
|
71
|
-
{
|
|
72
|
-
"takes": "use",
|
|
73
|
-
"item": "sneaker"
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
"takes": "use",
|
|
77
|
-
"item": "sneaker"
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
"takes": "pay",
|
|
81
|
-
"amount": 200,
|
|
82
|
-
"currency": "stride",
|
|
83
|
-
"to": "burn"
|
|
84
|
-
}
|
|
85
|
-
],
|
|
86
|
-
"raises": [
|
|
87
|
-
{
|
|
88
|
-
"place": 0,
|
|
89
|
-
"key": "mints",
|
|
90
|
-
"by": 1,
|
|
91
|
-
"upTo": 7
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
"place": 1,
|
|
95
|
-
"key": "mints",
|
|
96
|
-
"by": 1,
|
|
97
|
-
"upTo": 7
|
|
98
|
-
}
|
|
99
|
-
],
|
|
100
|
-
"out": [
|
|
101
|
-
{
|
|
102
|
-
"gives": "roll",
|
|
103
|
-
"box": "shoebox"
|
|
104
|
-
}
|
|
105
|
-
]
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
"key": "level-up",
|
|
109
|
-
"name": "Level up",
|
|
110
|
-
"in": [
|
|
111
|
-
{
|
|
112
|
-
"takes": "use",
|
|
113
|
-
"item": "sneaker"
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
"takes": "pay",
|
|
117
|
-
"amount": 50,
|
|
118
|
-
"currency": "stride",
|
|
119
|
-
"to": "burn"
|
|
120
|
-
}
|
|
121
|
-
],
|
|
122
|
-
"raises": [
|
|
123
|
-
{
|
|
124
|
-
"place": 0,
|
|
125
|
-
"key": "level",
|
|
126
|
-
"by": 1,
|
|
127
|
-
"upTo": 30
|
|
128
|
-
}
|
|
129
|
-
]
|
|
130
|
-
}
|
|
131
|
-
],
|
|
132
|
-
"grants": [
|
|
133
|
-
{
|
|
134
|
-
"key": "steps",
|
|
135
|
-
"name": "Daily steps",
|
|
136
|
-
"prize": {
|
|
137
|
-
"gives": "tokens",
|
|
138
|
-
"amount": 20,
|
|
139
|
-
"currency": "stride",
|
|
140
|
-
"from": "mint"
|
|
141
|
-
},
|
|
142
|
-
"vouchers": ["B8CrCHTMi223kknNgaJXXp8QGqNR9pwD1bfZVYvr5fmJ"],
|
|
143
|
-
"limits": {
|
|
144
|
-
"perWalletEach": {
|
|
145
|
-
"count": 1,
|
|
146
|
-
"every": "1d"
|
|
147
|
-
},
|
|
148
|
-
"perDay": 1000
|
|
149
|
-
},
|
|
150
|
-
"wallets": 1000,
|
|
151
|
-
"rounds": 365,
|
|
152
|
-
"fund": 0.5
|
|
153
|
-
}
|
|
154
|
-
],
|
|
155
|
-
"scenario": {
|
|
156
|
-
"days": 30,
|
|
157
|
-
"perDay": {
|
|
158
|
-
"box:shoebox": 20,
|
|
159
|
-
"grant:steps": 300,
|
|
160
|
-
"recipe:mint": 15,
|
|
161
|
-
"recipe:level-up": 60
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|