nodes issueshttps://git.duniter.org/groups/nodes/-/issues2024-03-28T13:55:31+01:00https://git.duniter.org/nodes/rust/duniter-v2s/-/issues/221Oracle : ne pas se bloquer à cause des clés2024-03-28T13:55:31+01:00Cédric MoreauOracle : ne pas se bloquer à cause des clésAujourd'hui l'Oracle se bloque après des rotateKeys :
```rust
let &[owner_key] = owner_keys else {
log::error!("🧙 [distance oracle] Expected exactly one Babe owner key, found {}: oracle cannot work", owner_keys.len());
return Ok(sp...Aujourd'hui l'Oracle se bloque après des rotateKeys :
```rust
let &[owner_key] = owner_keys else {
log::error!("🧙 [distance oracle] Expected exactly one Babe owner key, found {}: oracle cannot work", owner_keys.len());
return Ok(sp_distance::InherentDataProvider::<IdtyIndex>::new(None));
};
```
Or on pourrait utiliser un autre mécanisme pour savoir si l'on a déjà publié un résultat en blockchain, par exemple en utilisant des fichiers locaux.runtime-802Benjamin GalloisBenjamin Galloishttps://git.duniter.org/nodes/rust/duniter-v2s/-/issues/211decrease size of `duniter-polkadot-sdk` fork2024-03-21T18:44:37+01:00Hugo Trentesauxdecrease size of `duniter-polkadot-sdk` forkThe repo size is way too large, which makes download stage of building docker images of Duniter and Ğcli longer than needed.
https://github.com/duniter/duniter-polkadot-sdk/The repo size is way too large, which makes download stage of building docker images of Duniter and Ğcli longer than needed.
https://github.com/duniter/duniter-polkadot-sdk/HorizonBenjamin GalloisBenjamin Galloishttps://git.duniter.org/nodes/rust/duniter-v2s/-/issues/225Benchmarks error2024-03-21T18:44:36+01:00Benjamin GalloisBenchmarks errorThe benchmarks for pallet certification and identity include extra methods within the weight trait implementation generated by the benchmarks.The benchmarks for pallet certification and identity include extra methods within the weight trait implementation generated by the benchmarks.runtime-802Benjamin GalloisBenjamin Galloishttps://git.duniter.org/nodes/duniter-squid/-/issues/18Add foreign key on event2024-03-20T12:07:26+01:00Hugo TrentesauxAdd foreign key on event#4 was closed, but some fields still need foreign key on event:
```
type Transfer @entity {
blockNumber: Int! @index
→ event (not sure if needed since we already copied the timestamp)
```
```
type ChangeOwnerKey @entity {
blockNumb...#4 was closed, but some fields still need foreign key on event:
```
type Transfer @entity {
blockNumber: Int! @index
→ event (not sure if needed since we already copied the timestamp)
```
```
type ChangeOwnerKey @entity {
blockNumber: Int!
→ event
```
```
type Cert @entity {
createdOn: Int!
→ event (createdIn)
expireOn: Int!
→ optional event (expireIn)
```
```
type SmithCert @entity {
createdOn: Int!
→ event (createdIn)
```https://git.duniter.org/nodes/rust/duniter-v2s/-/issues/217Polkadotjs UI : perte de la description dans les calls2024-03-18T15:29:58+01:00Cédric MoreauPolkadotjs UI : perte de la description dans les callsDurant la présentation de @HugoTrentesaux aux RML18, la documentation n'a pas été affichée dans Polkadot UI au niveau des calls.Durant la présentation de @HugoTrentesaux aux RML18, la documentation n'a pas été affichée dans Polkadot UI au niveau des calls.https://git.duniter.org/nodes/rust/duniter-v2s/-/issues/224Check http API and update nginx config2024-03-14T16:55:24+01:00Hugo TrentesauxCheck http API and update nginx configBefore, Duniter was exposing two RPC APIs:
- http on 9933
- ws on 9944
And the nginx config serves both on https on 443 with path /http and /ws
It is used in cesium v2 to extract metadata: https://git.duniter.org/clients/cesium-grp/ce...Before, Duniter was exposing two RPC APIs:
- http on 9933
- ws on 9944
And the nginx config serves both on https on 443 with path /http and /ws
It is used in cesium v2 to extract metadata: https://git.duniter.org/clients/cesium-grp/cesium2s/-/blob/ccf3d3113bfc25cdc6ae0d30a7c1e1b743120515/package.json#L52
It seems broken at the moment.
RML18https://git.duniter.org/nodes/rust/duniter-v2s/-/issues/223Clean up stale branches2024-03-14T16:29:58+01:00Hugo TrentesauxClean up stale brancheshttps://git.duniter.org/nodes/rust/duniter-v2s/-/branches/stale
lot of stale branches can be removed
RML18https://git.duniter.org/nodes/rust/duniter-v2s/-/branches/stale
lot of stale branches can be removed
RML18Hugo TrentesauxHugo Trentesauxhttps://git.duniter.org/nodes/rust/duniter-v2s/-/issues/158Identity creation should only be possible for an account that already "exists"2024-03-13T16:22:13+01:00Hugo TrentesauxIdentity creation should only be possible for an account that already "exists"Since identity confirmation requires some funds for the tx fees, an identity should not be created on an "empty" account. Therefore the `create_identity` call should check that account exists ~~with sufficient balance~~.Since identity confirmation requires some funds for the tx fees, an identity should not be created on an "empty" account. Therefore the `create_identity` call should check that account exists ~~with sufficient balance~~.runtime-802https://git.duniter.org/nodes/rust/duniter-v2s/-/issues/218Protocole : ne pas autoriser la création d'une identité où le compte n'existe...2024-03-13T16:22:12+01:00Cédric MoreauProtocole : ne pas autoriser la création d'une identité où le compte n'existe pasPendant les RML 18 : la création d'une identité sur un compte qui n'existait pas (aucun provider, aucun suficient) est possible.
C'est gênant, on pourrait définir comme prérequis que le compte existe et possède des fonds pour pouvoir su...Pendant les RML 18 : la création d'une identité sur un compte qui n'existait pas (aucun provider, aucun suficient) est possible.
C'est gênant, on pourrait définir comme prérequis que le compte existe et possède des fonds pour pouvoir subir une création d'identité.runtime-802https://git.duniter.org/nodes/duniter-squid/-/issues/17Index distance oracle result2024-03-13T10:00:39+01:00pokaIndex distance oracle result![image](/uploads/037f61ec5498ba6a4691f5ffa433bfc6/image.png)![image](/uploads/037f61ec5498ba6a4691f5ffa433bfc6/image.png)pokapokahttps://git.duniter.org/nodes/rust/duniter-v2s/-/issues/183Refac generated documentation2024-03-12T14:37:01+01:00Hugo TrentesauxRefac generated documentationIn 1.6.0 substrate upgrade, the call documentation disappeared from runtime metadata. We then have to rethink the way we generate documentation.
See discussion: https://git.duniter.org/nodes/rust/duniter-v2s/-/merge_requests/229#note_40...In 1.6.0 substrate upgrade, the call documentation disappeared from runtime metadata. We then have to rethink the way we generate documentation.
See discussion: https://git.duniter.org/nodes/rust/duniter-v2s/-/merge_requests/229#note_40999
Ideas:
- [x] keep `cargo xtask gen-doc` but remove generated files from git index
- [x] generate documentation with `cargo doc` and host it somewhere online, built by a CI
- [ ] add an other CI which runs the gen doc xtask and output the results somewhere for Duniter website to take from
- [x] modify the xtask doc template to link to the doc generated with `cargo doc`runtime-802Benjamin GalloisBenjamin Galloishttps://git.duniter.org/nodes/duniter-squid/-/issues/16Crash processor: [ERR_ASSERTION]: The expression evaluated to a falsy value: ...2024-03-10T22:23:25+01:00pokaCrash processor: [ERR_ASSERTION]: The expression evaluated to a falsy value: (0, assert_1.default)(head.height >= this.chain[0].height)My subsquid node processor crashed with this logs:
```
duniter-squid-processor-1 | {"level":2,"time":1709683102158,"ns":"sqd:processor","msg":"435146 / 435146, rate: 0 blocks/sec, mapping: 71 blocks/sec, 212 items/sec, eta: 0s"}
dun...My subsquid node processor crashed with this logs:
```
duniter-squid-processor-1 | {"level":2,"time":1709683102158,"ns":"sqd:processor","msg":"435146 / 435146, rate: 0 blocks/sec, mapping: 71 blocks/sec, 212 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683107158,"ns":"sqd:processor","msg":"435147 / 435147, rate: 0 blocks/sec, mapping: 69 blocks/sec, 208 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683112158,"ns":"sqd:processor","msg":"435148 / 435148, rate: 0 blocks/sec, mapping: 70 blocks/sec, 210 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683117157,"ns":"sqd:processor","msg":"435149 / 435149, rate: 0 blocks/sec, mapping: 73 blocks/sec, 218 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683122287,"ns":"sqd:processor","msg":"435150 / 435150, rate: 0 blocks/sec, mapping: 45 blocks/sec, 136 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683128168,"ns":"sqd:processor","msg":"435151 / 435151, rate: 0 blocks/sec, mapping: 48 blocks/sec, 144 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683134763,"ns":"sqd:processor","msg":"435152 / 435152, rate: 0 blocks/sec, mapping: 47 blocks/sec, 142 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683140126,"ns":"sqd:processor","msg":"435153 / 435153, rate: 0 blocks/sec, mapping: 47 blocks/sec, 141 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683146170,"ns":"sqd:processor","msg":"435154 / 435154, rate: 0 blocks/sec, mapping: 46 blocks/sec, 137 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683152090,"ns":"sqd:processor","msg":"435155 / 435155, rate: 0 blocks/sec, mapping: 80 blocks/sec, 239 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683158108,"ns":"sqd:processor","msg":"435156 / 435156, rate: 0 blocks/sec, mapping: 77 blocks/sec, 231 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683164127,"ns":"sqd:processor","msg":"435157 / 435157, rate: 0 blocks/sec, mapping: 81 blocks/sec, 243 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683170090,"ns":"sqd:processor","msg":"435158 / 435158, rate: 0 blocks/sec, mapping: 82 blocks/sec, 245 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683176077,"ns":"sqd:processor","msg":"435159 / 435159, rate: 0 blocks/sec, mapping: 85 blocks/sec, 254 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683182174,"ns":"sqd:processor","msg":"435160 / 435160, rate: 0 blocks/sec, mapping: 86 blocks/sec, 259 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683188188,"ns":"sqd:processor","msg":"435161 / 435161, rate: 0 blocks/sec, mapping: 91 blocks/sec, 274 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683194091,"ns":"sqd:processor","msg":"435162 / 435162, rate: 0 blocks/sec, mapping: 90 blocks/sec, 270 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683200099,"ns":"sqd:processor","msg":"435163 / 435163, rate: 0 blocks/sec, mapping: 90 blocks/sec, 269 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":2,"time":1709683608909,"ns":"sqd:processor","msg":"435172 / 435172, rate: 0 blocks/sec, mapping: 138 blocks/sec, 415 items/sec, eta: 0s"}
duniter-squid-processor-1 | {"level":5,"time":1709683609149,"ns":"sqd:processor","err":{"generatedMessage":true,"code":"ERR_ASSERTION","actual":false,"expected":true,"operator":"==","stack":"AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:\n\n (0, assert_1.default)(head.height >= this.chain[0].height)\n\n at HotProcessor.moveToBlocks (/squid/node_modules/@subsquid/util-internal-ingest-tools/lib/hot.js:60:30)\n at HotProcessor.goto (/squid/node_modules/@subsquid/util-internal-ingest-tools/lib/hot.js:38:24)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async RpcDataSource.handleNewHeads (/squid/node_modules/@subsquid/substrate-data-raw/lib/datasource.js:213:24)\n at async RpcDataSource.subscription (/squid/node_modules/@subsquid/substrate-data-raw/lib/datasource.js:198:25)\n at async RpcDataSource.processHotBlocks (/squid/node_modules/@subsquid/substrate-data-raw/lib/datasource.js:113:13)"}}
```
(Thanks to ĞCli indexer check command)
It look likes it missed 8 higher blocks, between `435163` and `435172`, which is the cause of this error.
This is indexer is listening a local duniter v2s archive node.
indexer enpoind: `https://gdev-squid.axiom-team.fr/v1/graphql`
duniter endpoint: `wss://gdev.p2p.legal/ws`
---
On observe que le problème intervient à minuit pile, ce qui serait une étrange coincidence:
```
Bloc 435160 : 2024-03-05 23:59:42
Bloc 435161 : 2024-03-05 23:59:48
Bloc 435162 : 2024-03-05 23:59:54
Bloc 435163 : 2024-03-06 00:00:00
Bloc 435172 : 2024-03-06 00:06:48
```
On remarque également un trou de 6 minutes et 48 secondes entre le bloc 435163 et 435172, alors qu'il n'aurait dû s'écouler que 48 secondes.
---
Fait perturbant, les blocks manquants dans les logs semblent être présents en DB, et correctement datés:
```
{
"data": {
"block": [
{
"height": 435172,
"timestamp": "2024-03-06T00:01:06+00:00"
},
{
"height": 435171,
"timestamp": "2024-03-06T00:01:00+00:00"
},
{
"height": 435170,
"timestamp": "2024-03-06T00:00:54.001+00:00"
},
{
"height": 435169,
"timestamp": "2024-03-06T00:00:48.002+00:00"
},
{
"height": 435168,
"timestamp": "2024-03-06T00:00:42+00:00"
},
{
"height": 435167,
"timestamp": "2024-03-06T00:00:24+00:00"
},
{
"height": 435166,
"timestamp": "2024-03-06T00:00:18+00:00"
},
{
"height": 435165,
"timestamp": "2024-03-06T00:00:12.001+00:00"
},
{
"height": 435164,
"timestamp": "2024-03-06T00:00:06.001+00:00"
},
{
"height": 435163,
"timestamp": "2024-03-06T00:00:00.001+00:00"
},
{
"height": 435162,
"timestamp": "2024-03-05T23:59:54+00:00"
},
{
"height": 435161,
"timestamp": "2024-03-05T23:59:48+00:00"
},
{
"height": 435160,
"timestamp": "2024-03-05T23:59:42.001+00:00"
},
{
"height": 435159,
"timestamp": "2024-03-05T23:59:36.001+00:00"
},
{
"height": 435158,
"timestamp": "2024-03-05T23:59:30.001+00:00"
}
]
}
}
```https://git.duniter.org/nodes/rust/duniter-v2s/-/issues/212Add test to ensure distance oracle does not try to re-publish a result2024-03-09T18:00:52+01:00Hugo TrentesauxAdd test to ensure distance oracle does not try to re-publish a resultIn MR !252, #207 was fixed, but the behavior still has to be tested to avoid undetected breaking if storage key name changes.In MR !252, #207 was fixed, but the behavior still has to be tested to avoid undetected breaking if storage key name changes.HorizonBenjamin GalloisBenjamin Galloishttps://git.duniter.org/nodes/rust/duniter-v2s/-/issues/213Consider using subxt::OnlineClient instead of sc_service::TFullClient in dist...2024-03-06T13:34:41+01:00Hugo TrentesauxConsider using subxt::OnlineClient instead of sc_service::TFullClient in distance clientMore details on comment https://git.duniter.org/nodes/rust/duniter-v2s/-/merge_requests/252#note_42404
Summary: we are using hardcoded keys instead of keys from runtime metadata. Using subxt online client would fix this but make `create...More details on comment https://git.duniter.org/nodes/rust/duniter-v2s/-/merge_requests/252#note_42404
Summary: we are using hardcoded keys instead of keys from runtime metadata. Using subxt online client would fix this but make `create_distance_inherent_data_provider` asynchronous with possible consequences far in the code.Horizonhttps://git.duniter.org/nodes/rust/duniter-v2s/-/issues/210Smith documentation is not up-to-date2024-03-01T14:18:17+01:00Cédric MoreauSmith documentation is not up-to-date[https://forum.duniter.org/t/apprentis-forgerons/10665/48](https://forum.duniter.org/t/apprentis-forgerons/10665/48?u=cgeek)[https://forum.duniter.org/t/apprentis-forgerons/10665/48](https://forum.duniter.org/t/apprentis-forgerons/10665/48?u=cgeek)runtime-802https://git.duniter.org/nodes/rust/duniter-v2s/-/issues/209Stop distance oracle earlier and quieter during sync2024-03-01T08:52:47+01:00Pascal EngélibertStop distance oracle earlier and quieter during syncDistance client should stop earlier when syncing, and then do not print anything.
For now it produces these logs:
```
Mar 01 07:40:59 polux duniter[273763]: 2024-03-01 07:40:59 ⚙️ Syncing 105.5 bps, target=#368008 (9 peers), best: #358...Distance client should stop earlier when syncing, and then do not print anything.
For now it produces these logs:
```
Mar 01 07:40:59 polux duniter[273763]: 2024-03-01 07:40:59 ⚙️ Syncing 105.5 bps, target=#368008 (9 peers), best: #35858 (0x5cf7…9b6d), finalized #35840 (0x98c1…6533), ⬇ 39.0kiB/s ⬆ 0.6kiB/s
Mar 01 07:41:00 polux duniter[273763]: 2024-03-01 07:41:00 🧙 [distance oracle] Expected exactly one Babe owner key, found 0: oracle cannot work
Mar 01 07:41:04 polux duniter[273763]: 2024-03-01 07:41:04 ⚙️ Syncing 125.4 bps, target=#368009 (9 peers), best: #36485 (0x8e80…08ef), finalized #36352 (0xcc9d…a43b), ⬇ 39.7kiB/s ⬆ 0.8kiB/s
Mar 01 07:41:06 polux duniter[273763]: 2024-03-01 07:41:06 🧙 [distance oracle] Expected exactly one Babe owner key, found 0: oracle cannot work
Mar 01 07:41:09 polux duniter[273763]: 2024-03-01 07:41:09 ⚙️ Syncing 138.5 bps, target=#368010 (9 peers), best: #37178 (0x1c98…9c12), finalized #36864 (0x5009…e4d4), ⬇ 48.5kiB/s ⬆ 1.2kiB/s
Mar 01 07:41:12 polux duniter[273763]: 2024-03-01 07:41:12 🧙 [distance oracle] Expected exactly one Babe owner key, found 0: oracle cannot work
```
which look bad.
I find it surprising that the inherent provider is run during sync. I guess it should not be the case.https://git.duniter.org/nodes/rust/duniter-v2s/-/issues/208allow identity revocation with v1 certificate2024-03-01T01:15:30+01:00Hugo Trentesauxallow identity revocation with v1 certificateWe should make this possibleWe should make this possibleĞ1 real migrationhttps://git.duniter.org/nodes/duniter-squid/-/issues/15Add null safety for typeORM even when unfetched2024-02-28T13:26:52+01:00Hugo TrentesauxAdd null safety for typeORM even when unfetchedThis is a tracking issue for a type-orm related squid issue: https://github.com/subsquid/squid-sdk/issues/228This is a tracking issue for a type-orm related squid issue: https://github.com/subsquid/squid-sdk/issues/228https://git.duniter.org/nodes/duniter-squid/-/issues/14Provide stable cursor based pagination2024-02-28T13:22:55+01:00Hugo TrentesauxProvide stable cursor based paginationCurrently only offset based pagination is available in stable Hasura. The cursor based pagination is handled by the beta relay API. There are two problems:
- this is a different endpoint which is cumbersome in client developement
- it i...Currently only offset based pagination is available in stable Hasura. The cursor based pagination is handled by the beta relay API. There are two problems:
- this is a different endpoint which is cumbersome in client developement
- it is currently incompatible with limiting the length of the request, see https://github.com/hasura/graphql-engine/issues/9578
I'm adding this issue to track the problem.https://git.duniter.org/nodes/rust/duniter-v2s/-/issues/197Use IdtyIndex as Session ValidatorId2024-02-27T16:00:53+01:00Hugo TrentesauxUse IdtyIndex as Session ValidatorId> this issue was renamed after discussion
We have a strange pattern: only member identities are allowed to be validators, and they are identified by their accountid which can change.
There are too many layers:
1. pallet identity
2. ...> this issue was renamed after discussion
We have a strange pattern: only member identities are allowed to be validators, and they are identified by their accountid which can change.
There are too many layers:
1. pallet identity
2. pallet membership (sorry)
3. pallet smith-members
4. pallet authority-members
5. pallet session
I think we should at least merge `smith-members` and `authority-members` which are both adapters for pallet session.
Authority-members already provides an interface for pallet session with `pallet_session::Call::<T>::set_keys` and `pallet_session::SessionManager` implementation (that uses the results coming from `go_online` and `go_offline`).
Two options here:
- use identity index as validator id
- keep account id as validator id but update it on change_owner_key (implementation already available) so it still has a meaning
In both case, the `Members` storage item does not need to map to somthing and can simply be a set (a map to `()`).
Marking this as #bug because it's unspecified behavior. Not sure however in which scenario it could be problematic.runtime-802