generated from wds4/erb-sqlite3-multiWindows
-
Notifications
You must be signed in to change notification settings - Fork 3
/
notes.txt
160 lines (142 loc) · 7.26 KB
/
notes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
UPDATE myNostrProfile SET following = '["3efdaebb1d8923ebd99c9e7ace3b4194ab45512e2be79c1b7d68d9243e0d2681","e5272de914bd301755c439b88e6959a43c9d2664831f093c51e9c799a16a102f","82341f882b6eabcd2ba7f1ef90aad961cf074af15b9ef44a09f9d2a8fbfbe6a2","32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245","3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d","6b0d4c8d9dc59e110d380b0429a02891f1341a0fa2ba1b1cf83a3db4d47e3964","e88a691e98d9987c964521dff60025f60700378a4879180dcbbb4a5027850411","04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9","472f440f29ef996e92a186b8d320ff180c855903882e59d50de1b8bd5669301e","51b826cccd92569a6582e20982fd883fccfa78ad03e0241f7abec1830d7a2565","c4eabae1be3cf657bc1855ee05e69de9f059cb7a059227168b80b89761cbc4e0","703e26b4f8bc0fa57f99d815dbb75b086012acc24fc557befa310f5aa08d1898","a341f45ff9758f570a21b000c17d4e53a3a497c8397f26c0e6d61e5acffc7a98","50d94fc2d8580c682b071a542f8b1e31a200b0508bab95a33bef0855df281d63","6e1534f56fc9e937e06237c8ba4b5662bcacc4e1a3cfab9c16d89390bec4fca3","4523be58d395b1b196a9b8c82b038b6895cb02b683d0c253a955068dba1facd0","10ce7cb95c73fbcf16cadda151bfd052a014f76281fc2a9e862236d82918a155","5e7ae588d7d11eac4c25906e6da807e68c6498f49a38e4692be5a089616ceb18","aa55a479ad6934d0fd78f3dbd88515cd1ca0d7a110812e711380d59df7598935","00a2b73a28d1fc188bc6aacce020a3d49b7ddcd4856733c40e44eb57c8ae1157","0f022893b4ec1fc34d6510aee6fb68e12e32dda27f5faf1fb00d3ea41fbc1bbe","24cf74e1125833e9752b4843e2887dedddf6910896e6e82a2def68c8527d0814","f728d9e6e7048358e70930f5ca64b097770d989ccd86854fe618eda9c8a38106","1833ee04459feb2ca4ae690d5f31269ad488c69e5fe903a42b532c677c4a8170","73811e530aaa1d3074f246a281a42626341fbe6c549b64909a894cca93166c87","6e8e49dd3772091325d248d6f3cb04320cbbf0db9e9ebe5a03df7e9611094689","d625f5a9137cf6a0bcb2c8527a455f3f33f71b8cf52ed436917b57d1e4b0a304","a08175d65051c08b83600abf6f5c18efd455114b4863c65959c92b13ee52f87c","0a722ca20e1ccff0adfdc8c2abb097957f0e0bf32db18c4281f031756d50eb8d","ee11a5dff40c19a555f41fe42b48f00e618c91225622ae37b6c2bb67b76c4e49","84dee6e676e5bb67b4ad4e042cf70cbd8681155db535942fcc6a0533858a7240","aef0d6b212827f3ba1de6189613e6d4824f181f567b1205273c16895fdaf0b23","fdd5e8f6ae0db817be0b71da20498c1806968d8a6459559c249f322fa73464a7"]' WHERE name='wds4'
17 March 2023:
REGULAR EVENTS (NIP-16): kind 1000 <= n < 10000
REPLACEABLE EVENTS (NIP-16): kind 10000 <= n < 20000
EPHEMEREAL EVENTS (NIP-16): kind 20000 <= n < 30000
PARAMETRIZED REPLACEABLE EVENTS (NIP-33): kind 30000 <= n < 40000, and a d tag:
GRAPEVINE & CONCEPT-GRAPH
TESTNET - always use last 100 (subset of non-testnet)
REGULAR: kind 9000 <= n < 10000
REPLACEABLE: kind 19000 <= n < 20000
EPHEMEREAL: kind 29000 <= n < 30000
PARAMETRIZED REPLACEABLE: kind 39000 <= n < 40000, and a d tag
PRODUCTION - always use last 1000:
REGULAR: kind 9000 <= n < 10000
REPLACEABLE: kind 19000 <= n < 20000
EPHEMEREAL: kind 29000 <= n < 30000
PARAMETRIZED REPLACEABLE: kind 39000 <= n < 40000, and a d tag
Specifically:
TESTNET: kind ends in 901, and can iterate to different testnets: 902, 903, etc
tags includes:
Grapevine: [['g', 'grapevine-testnet']] or [['g', 'grapevine-testnet-901']]
Concept Graph: [['c', 'concept-graph-testnet']] or [['c', 'concept-graph-testnet-901']]
REGULAR: kind 9901
REPLACEABLE: kind 19901
EPHEMEREAL: kind 29901
PARAMETRIZED REPLACEABLE: kind 39901, and a d tag
PRODUCTION
Grapevine: [['g', 'grapevine']]
Concept Graph: [['c', 'concept-graph']]
REGULAR: kind 9001
REPLACEABLE: kind 19001
EPHEMEREAL: kind 29001
PARAMETRIZED REPLACEABLE: kind 39001, and a d tag
PARAMETRIZED REPLACEABLE EVENTS:
Use this for lists that are frequently updated such that we will typically be interested
only in the most recently updated version, and we will have no use for older lists,
e.g. an updated list of my recomended relays.
USE OF NIP-33, PARAMETRIZED REPLACEABLE EVENTS
Will use this for submitting lists of ratings, where the list will change, and will want newest list to replace all older lists.
e.g. Alice submits her list of recommended relays. No need to keep older lists.
HOW TO USE NIP-33 REPLACEABLE EVENT: kind 30000 <= n < 40000, and a d tag:
GRAPEVINE: TESTNET
With parametrized replaceable event: kind 39900 <= n < 40000
Without replaceable event: kind
kind: 39901 (?)
tags: [['d', uniqueID], ['g', 'grapevine-testnet']], then p-tags to reference rated pubkeys
will be switching from NIP-16 to NIP-33
kind: choose
tags: [["d", uniqueID]]
where uniqueID = <author pubkey>-<ratingTemplateSlug (or ipfs or ipns)>, e.g.:
uniqueID = "e5272de914bd301755c439b88e6959a43c9d2664831f093c51e9c799a16a102f-endorseAsRelaysPicker"
EVENTS:
const event: NostrEvent = {
content: message,
kind: 39901,
tags: [['d', uniqueID], ['g', 'grapevine-testnet']],
created_at: dateToUnix(),
pubkey: getPublicKey(myPrivkey),
};
LISTENERS:
const { events } = useNostrEvents({
filter: {
since: 0,
kinds: [39901],
'#g': ['grapevine-testnet'],
'#r': ['endorseAsRelaysPickerHunter'],
},
});
g: indicates grapevine or grapevine-testnet (or other options?)
p: indicates pubkey
r: indicates ratingTemplate; this is an instance of a ratingTemplate
w: indicates that the content is a word, i.e. an element of a concept graph
t: indicates type of word, with options including:
list
rating
////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// CREATE EVENTS ////////////////////////////////////
////////// CREATE RATING with ratingTemplate slug: endorseAsRelaysPicker ///////
const uniqueID = `${myPubkey}-endorseAsRelaysPicker`;
const aTags = [
['d', uniqueID],
['g', 'grapevine-testnet'],
['r', 'endorseAsRelaysPicker'],
];
for (let x = 0; x < aEndorsedProfilesUpdated.length; x++) {
aTags.push(['p', aEndorsedProfilesUpdated[x]]);
}
const event: NostrEvent = {
created_at: dateToUnix(),
kind: 39901,
tags: aTags,
content: '',
pubkey: myPubkey,
};
////////// CREATE LIST (a list is like a proto-concept) ///////
By using the d-key, this allows the author to update the definition of the list. (Maybe bad idea?)
const uniqueID = `${myPubkey}-createList`;
const aTags = [
['d', uniqueID],
['g', 'grapevine-testnet'],
['c', 'list'], // could also use the id (hash) for "list" in place of the slug "list" (which is a wordType)
];
const event: NostrEvent = {
created_at: dateToUnix(),
kind: 39901,
tags: aTags,
content: sWord,
pubkey: myPubkey,
};
////////// CREATE INSTANCE OF A LIST ///////
const uniqueID = `${myPubkey}-createInstance`;
const aTags = [
['d', uniqueID],
['g', 'grapevine-testnet'],
['c', <id to represent the list wordType >],
];
const event: NostrEvent = {
created_at: dateToUnix(),
kind: 39901,
tags: aTags,
content: sWord,
pubkey: myPubkey,
};
////////// CREATE RATING TEMPLATE (a list is like a proto-concept) ///////
const uniqueID = `${myPubkey}-createList`;
const aTags = [
['d', uniqueID],
['g', 'grapevine-testnet'],
['w', 'ratingTemplate'],
];
const event: NostrEvent = {
created_at: dateToUnix(),
kind: 39901,
tags: aTags,
content: '',
pubkey: myPubkey,
};
/////////// search event tags
// Get the array of c tags
const aTags_c = event.tags.filter(([k, v]) => k === 'c' && v && v !== '');
// Get the first c tag
const c0 = event.tags.filter(([k, v]) => k === 'c' && v && v !== '')[0];