Oui c’est bien ce qui me pose problème avec l’approche “on s’appuie sur les headers pour valider” ^^ Maintenant, si on trouve une méthode de mettre toutes ces validations dans la chaine de bloc, on résout tout nos problèmes.
Ceci dit c’est pas trivial. Il suffit de voir tout ce qu’on a ajouté à BMA suite aux demandes utilisateurs (principalement via @kimamila et ses retours) :
https://g1.duniter.inso.ovh/wot/requirements/inso
{
"identities": [
{
"pubkey": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"uid": "inso",
"sig": "gTUSERA3IqEzMDvdpiFkTgBBFKwUl7M62e+VCzwyHJTrxvBSB+C+8ImoKsd7pYFAnZ+HL6cJ1p7jyVUIOZGqCw==",
"meta": {
"timestamp": "0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855"
},
"revocation_sig": null,
"revoked": false,
"revoked_on": null,
"expired": false,
"outdistanced": false,
"isSentry": true,
"wasMember": true,
"certifications": [
{
"from": "BbdyLPyABYzx8Lef3oXzkoiAQ5kn3uU96ZED7Nt17gZx",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "56aXsYLSQmGz75ZohRQMLcKiYaUmJK5cbyz4ZGiKsbAe",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "3QLkBNoCNJENY8HyCDh1kDG2UKdg3q66z1Q91hpSJinD",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "7vU9BMDhN6fBuRa2iK3JRbC6pqQKb4qDMGsFcQuT5cz",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "FVUFRrk1K5TQGsY7PRLwqHgdHRoHrwb1hcucp4C2N5tD",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "HovtdmYvNzwi9e2YTXaE4gr53czvEodDFXxgupvbzfNC",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "BPEap6B98qBxTmUMoxvCtuP2JXFMjX7kDJT1RaYn3UbS",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "38MEAZN68Pz1DTvT3tqgxx4yQP6snJCQhPqEFxbDk4aE",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "3wdDzBz18mWupx1UChMnhky2Nut3XVnyn9U7Y662J7yE",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "GfKERHnJTYzKhKUma5h1uWhetbA8yHKymhVH2raf2aCP",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "7F6oyFQywURCACWZZGtG97Girh9EL1kg2WBwftEZxDoJ",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "Ds1z6Wd8hNTexBoo3LVG2oXLZN4dC9ZWxoWwnDbF1NEW",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "4bD7J3uA5pH2N9Xqimspf2XxWN4ESM2Az2XBqtSeHvUZ",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "DymYJziyjC9pyupKNxT9iukEKrnFSGNCLnxFQtSWJSg5",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "4GdKJq2LqV1rrCkixUoSpg4w5Abz41knU4h9eov2R3QU",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1488987127,
"expiresIn": 34613048
},
{
"from": "Be1eVp7etVfA7cT6er6dcJ9d5KxGJVY2tzCGGCAz3yG",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1496384892,
"expiresIn": 42010813
},
{
"from": "Do99s6wQR2JLfhirPdpAERSjNbmjjECzGxHNJMiNKT3P",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1496404204,
"expiresIn": 42030125
},
{
"from": "4rWREtAxNS2L427f4vG2LafZNZ9ZLj3cvFFxGyrtFzGL",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1504624079,
"expiresIn": 50250000
},
{
"from": "8TqtovcRTgdbJXHKoKU5bU41a9B6SdR5rGGWRz6oY9hv",
"to": "5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv",
"timestamp": 1509667372,
"expiresIn": 55293293
}
],
"pendingCerts": [],
"pendingMemberships": [],
"membershipPendingExpiresIn": 0,
"membershipExpiresIn": 30081626
},
{
"pubkey": "7hygreNPE4LJpQhB6zHqGsofKA2G3dDXQM2n6LkDBakB",
"uid": "Mymypinson",
"sig": "trkirggMe9HsnO4T2FV9h1NKzxiZncXB5D5znhuq3zDZaY3MTja2edWaJhO0KcFU4yZdQPudt8ltldYL0rk1Cg==",
"meta": {
"timestamp": "17524-00000C1533A49A4EC583B91148E2A38E91E39396BAD0C8D3A5B93338E905EF83"
},
"revocation_sig": null,
"revoked": false,
"revoked_on": null,
"expired": false,
"outdistanced": false,
"isSentry": true,
"wasMember": true,
"certifications": [
{
"from": "FZwTmdizfMXHwHKAGpJm8kEg7DWKeoPw9M1qAFmTcraV",
"to": "7hygreNPE4LJpQhB6zHqGsofKA2G3dDXQM2n6LkDBakB",
"timestamp": 1499204026,
"expiresIn": 44829947
},
{
"from": "6rhGeDLkED3d13vrGGcXUqymFtgQgdBDyk5pUbe6icbh",
"to": "7hygreNPE4LJpQhB6zHqGsofKA2G3dDXQM2n6LkDBakB",
"timestamp": 1497741482,
"expiresIn": 43367403
},
{
"from": "8SJZia3RJ36hp3wXy8AJXJj8z7yeLHCVaTtv2xSi2MBj",
"to": "7hygreNPE4LJpQhB6zHqGsofKA2G3dDXQM2n6LkDBakB",
"timestamp": 1495043998,
"expiresIn": 40669919
},
{
"from": "zio4Jp8hnqkYmoz5FMYm1siCjGmjWzVUg27KMfDoefA",
"to": "7hygreNPE4LJpQhB6zHqGsofKA2G3dDXQM2n6LkDBakB",
"timestamp": 1495043540,
"expiresIn": 40669461
},
{
"from": "5SwfQubSat5SunNafCsunEGTY93nVM4kLSsuprNqQb6S",
"to": "7hygreNPE4LJpQhB6zHqGsofKA2G3dDXQM2n6LkDBakB",
"timestamp": 1495043540,
"expiresIn": 40669461
},
{
"from": "5hvx7VXG5yiD3NgZKpaVcjL1AtD8LMw6MfT7iERmW5AL",
"to": "7hygreNPE4LJpQhB6zHqGsofKA2G3dDXQM2n6LkDBakB",
"timestamp": 1498497857,
"expiresIn": 44123778
}
],
"pendingCerts": [],
"pendingMemberships": [],
"membershipPendingExpiresIn": 0,
"membershipExpiresIn": 8510998
}
]
}
Concrètement, comment est-ce qu’on peut valider chacune des informations présente dans cette URL via les simples headers des blocs ?