Activity

A feed of development activity from across Sia Foundation GitHub repositories.

Jul 1, 2024
Jul 1, 2024

Bumps the all-dependencies group with 1 update: go.sia.tech/jape.

Updates go.sia.tech/jape from 0.11.2-0.20240306154058-9832414a5385 to 0.12.0

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jun 28, 2024

/wallet/:id/events can be slow in full index mode when the wallet has no events. Adds a check to make sure the wallet has events before running the more expensive events query.

Jun 28, 2024
Jun 28, 2024
Jun 28, 2024
Jun 28, 2024
Jun 28, 2024

This PR adds a subnets column to the hosts table. This in an attempt to get rid of the redundant IP churn we saw on arequipa. This is under the assumption that the churn is related to the way we deal with intermittent dns resolve issues, which up until now we've treated as redundant IPs because the ipFilter returns a simple yes/no bool.

Fixes https://github.com/SiaFoundation/renterd/issues/1342

Jun 28, 2024

Merging in dev required getting rid of the PeerStore. Sorry for that @ChrisSchinnerl, it's a little awkward but since it's quite a straightforward migration could you glance at:

  • stores/peers.go
  • stores/sql/main.go
  • stores/sql/mysql/main.go

I'll deploy it to my node in the mean time. (edit: keeping it in DRAFT until panic in core is resolved and I can confirm it's running smoothly)

Jun 28, 2024

I didn't bother writing it out but instead supplied an example compose file with the absolute minimum config requirements per service.

Jun 28, 2024
Jun 27, 2024
Jun 27, 2024
Jun 27, 2024

There's a docs PR following this one, but this one contains some small tweaks to the way we parse the config on startup. There's some small pitfalls in our config currently when it comes to setting up renterd as a cluster of nodes.

  • setting worker.Enabled to false when remotes are configured makes it easier to build conditionals
  • appending /api/worker to the worker's external addr made it inconsistent with RENTERD_BUS_REMOTE_ADDR
  • seed should only be required if you have at least a bus or worker, the autopilot doesn't require it

I purposefully kept it at that and did not try to refactor too much. I think for v2 we should consider taking another look at our config though. It's not the worst but it's definitely not prettiest either.

This min. requirements cluster setup docker-compose file works.

version: '3.9'

services:
  bus:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
    container_name: renterd_bus
    environment:
      - RENTERD_SEED=jump illness approve cry fabric alert fly post kind age keep bid
      - RENTERD_API_PASSWORD=bus-pass
    ports:
      - "9980:9980"
      - "9981:9981"

  worker-1:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
    container_name: renterd_worker-1
    environment:
      - RENTERD_AUTOPILOT_ENABLED=false
      - RENTERD_SEED=jump illness approve cry fabric alert fly post kind age keep bid
      - RENTERD_API_PASSWORD=worker-pass
      - RENTERD_BUS_API_PASSWORD=bus-pass
      - RENTERD_BUS_REMOTE_ADDR=http://bus:9980/api/bus
      - RENTERD_WORKER_EXTERNAL_ADDR=http://worker-1:9980/api/worker
    ports:
      - "9982:9980"
    depends_on:
      - bus

  worker-2:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
    container_name: renterd_worker-2
    environment:
      - RENTERD_SEED=jump illness approve cry fabric alert fly post kind age keep bid
      - RENTERD_API_PASSWORD=worker-pass
      - RENTERD_BUS_API_PASSWORD=bus-pass
      - RENTERD_BUS_REMOTE_ADDR=http://bus:9980/api/bus
      - RENTERD_WORKER_EXTERNAL_ADDR=http://worker-2:9980/api/worker
    ports:
      - "9983:9980"
    depends_on:
      - bus

  autopilot:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
    container_name: renterd_autopilot
    environment:
      - RENTERD_API_PASSWORD=autopilot-pass
      - RENTERD_BUS_API_PASSWORD=bus-pass
      - RENTERD_BUS_REMOTE_ADDR=http://bus:9980/api/bus
      - RENTERD_WORKER_API_PASSWORD=<worker-password>
      - RENTERD_WORKER_REMOTE_ADDRS=http://worker-1:9980/api/worker;http://worker-2:9980/api/worker
    ports:
      - "9984:9980"
    depends_on:
      - bus
      - worker-1
      - worker-2
Jun 27, 2024
Jun 27, 2024

This draft is a debugging test for all of the possible wallet events. This is not intended to be merged.

[
  {
    "id": "h:4d0389ef76d72548fe5bd64c117e4fbcee594ce1573ec9539f4380abad256b1b",
    "index": {
      "height": 204,
      "id": "bid:868a93d5bb1b411bc73e56db36b75bc1cfedc72002ea2e11a9a63af2d6724aa7"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 349,
    "type": "siafundClaim",
    "data": {
      "siacoinElement": {
        "id": "h:4d0389ef76d72548fe5bd64c117e4fbcee594ce1573ec9539f4380abad256b1b",
        "leafIndex": 432,
        "merkleProof": null,
        "siacoinOutput": {
          "value": "2005827263267429760665970000",
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        },
        "maturityHeight": 348
      }
    }
  },
  {
    "id": "h:4712cf57e90de093a8ed52ec8831f376aac7c739847ec64f324525bf51d7bfc3",
    "index": {
      "height": 203,
      "id": "bid:6d37359564b7c36fb55c50f48aab4c2ae7545ce9b93ff1ab2f9511d1f20865b7"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 348,
    "type": "v2ContractResolution",
    "data": {
      "parent": {
        "id": "h:e773d79ce8ed3b5edf11572c3d56cc3908e6c0766479f09d21420df22ca416be",
        "leafIndex": 423,
        "merkleProof": [
          "h:dec7cb8813aa21ebaec3da1d3a521903305079c382b2e37b1cc8e3c53e66c2db",
          "h:55bd6fb6bae8bc5063f20f67100dbee711e9fa75b5b0b50fc01d7e15e76b69a3",
          "h:14b049a779a996ef3c771669d30517798ef026c95ab5be146cab98dc3854e8cf",
          "h:d9d42af0c7eed9f89c605738f667e6b4248bfb93aa73c98d7c37b40bc9ec8f28"
        ],
        "v2FileContract": {
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "proofHeight": 211,
          "expirationHeight": 221,
          "renterOutput": {
            "value": "10000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "hostOutput": {
            "value": "0",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          "missedHostValue": "0",
          "totalCollateral": "0",
          "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "revisionNumber": 0,
          "renterSignature": "sig:db264235ecadc89e63221e4e96347d560754d1f93939120c6d02c96e5207578e64067bd6a4313d9d84de019412d028ba98e182cde342f0cb4ffe1ec3f4783e03",
          "hostSignature": "sig:db264235ecadc89e63221e4e96347d560754d1f93939120c6d02c96e5207578e64067bd6a4313d9d84de019412d028ba98e182cde342f0cb4ffe1ec3f4783e03"
        }
      },
      "type": "renewal",
      "resolution": {
        "finalRevision": {
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "proofHeight": 211,
          "expirationHeight": 221,
          "renterOutput": {
            "value": "10000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "hostOutput": {
            "value": "0",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          "missedHostValue": "0",
          "totalCollateral": "0",
          "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "revisionNumber": 18446744073709551615,
          "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
          "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
        },
        "newContract": {
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "proofHeight": 221,
          "expirationHeight": 231,
          "renterOutput": {
            "value": "10000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "hostOutput": {
            "value": "0",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          "missedHostValue": "0",
          "totalCollateral": "0",
          "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "revisionNumber": 0,
          "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
          "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
        },
        "renterRollover": "0",
        "hostRollover": "0",
        "renterSignature": "sig:984dea37a3897f6287fd04630e0878df5518e4ae95ff1cba7fa72a87b74cc85774306bba8ff563353b2d6bbca50e331f3dcf54eca3b36f14eb01dfdd7c07d00e",
        "hostSignature": "sig:984dea37a3897f6287fd04630e0878df5518e4ae95ff1cba7fa72a87b74cc85774306bba8ff563353b2d6bbca50e331f3dcf54eca3b36f14eb01dfdd7c07d00e"
      }
    }
  },
  {
    "id": "h:51e066366b66e445725afe7fc54e85019c8b692aaa7502c36630d99e911ac98c",
    "index": {
      "height": 201,
      "id": "bid:5f4b2533cc467ab64e6032f4663819fa2c310fd180637349abbde5977c664fad"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 346,
    "type": "v2ContractResolution",
    "data": {
      "parent": {
        "id": "h:ee4c82247b462b875f7036b2076b1a525c97889a542c36b9e9ef1166fe74e781",
        "leafIndex": 397,
        "merkleProof": [
          "h:f58e964cf335ac0a4f055755aa210e0f3e1d7c6de35711f09a3e2a8fd54470ba",
          "h:36841292b0e182ddaf8c761ffd9b71f9463cf4530a134fdf60d08ea9a084ce57",
          "h:155c83d210d64c97a0bd0310630748c7fa2226ef6e514d37079cd25f797d4162",
          "h:abb482c19f1a14b21033b0b7b8304f685857a4f10d06fb20f172b253657e425b",
          "h:5dba3a456ed101f794a36e3396e375a88f8050e1a0b28bc2a15f105fbc44762a"
        ],
        "v2FileContract": {
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "proofHeight": 200,
          "expirationHeight": 210,
          "renterOutput": {
            "value": "10000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "hostOutput": {
            "value": "0",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          "missedHostValue": "0",
          "totalCollateral": "0",
          "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "revisionNumber": 0,
          "renterSignature": "sig:97385f262a2f8db3bd29b072b0ab7cc6dbe01843af09c9010675b3ec7db8a96dd199b3ede4df4ada81d41ca3b5ccb2ad6bfaa01071438ec6fce72e5f18bcd40a",
          "hostSignature": "sig:97385f262a2f8db3bd29b072b0ab7cc6dbe01843af09c9010675b3ec7db8a96dd199b3ede4df4ada81d41ca3b5ccb2ad6bfaa01071438ec6fce72e5f18bcd40a"
        }
      },
      "type": "storage proof",
      "resolution": {
        "proofIndex": {
          "id": "h:3c95abbf4ee22cf09468ffd5d39ea74c9775dae57c34b45d91f3f7f753c18ed4",
          "leafIndex": 416,
          "merkleProof": [],
          "chainIndex": {
            "height": 200,
            "id": "bid:3c95abbf4ee22cf09468ffd5d39ea74c9775dae57c34b45d91f3f7f753c18ed4"
          }
        },
        "leaf": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "proof": []
      }
    }
  },
  {
    "id": "h:66c8978661a560bfd4497e7b10f99b32edee6f5c64f89376b0502bc07172b59b",
    "index": {
      "height": 190,
      "id": "bid:f3e8fc9091217ba6d8c369342c980138a56e514cfc78bf4dc698cb5095c05902"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 335,
    "type": "v2ContractResolution",
    "data": {
      "parent": {
        "id": "h:b48817a1efc249109eb54202fcfb4b8e0a14368b98c0f9e6fe2519a8e1cbffd8",
        "leafIndex": 351,
        "merkleProof": [
          "h:8509a73f82036fc4fd3ed652ff0f49db15ffaa2fef8d1010e9a2110026bb81b3",
          "h:cf179de3e7d390a4e85e784d7330daf1e925e47960bd0b06e68a1f00406b01da",
          "h:e46b612429e205b58843ad398b1f2dd31b11aebdd2aa0caac40d277905d4ca11",
          "h:a07408549e147d52e48b112a05bc632a19abc9f57fe2fea30efd945fdd01c49c",
          "h:56359fa49114d1ffdc14904cfdf9aff1e6f989ba8bc64d6f44218c73932688ec",
          "h:adffd0f07779af480239a099bcdbee317b3eb38796bbf43db061809d330379ad",
          "h:14815951f3861d371083dc342435d2017fe360d94b265fd6d9a8c6c4d6e2d048"
        ],
        "v2FileContract": {
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "proofHeight": 179,
          "expirationHeight": 189,
          "renterOutput": {
            "value": "10000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "hostOutput": {
            "value": "0",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          "missedHostValue": "0",
          "totalCollateral": "0",
          "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "revisionNumber": 0,
          "renterSignature": "sig:a51f56c532f331b8ee9fd9bd3a76c89bed8643f2a60be2d820f168d19c7dae73a737c0eef532b992845af2a4a3bfd4993f01a4b66f42f87366c9e50afa2a820f",
          "hostSignature": "sig:a51f56c532f331b8ee9fd9bd3a76c89bed8643f2a60be2d820f168d19c7dae73a737c0eef532b992845af2a4a3bfd4993f01a4b66f42f87366c9e50afa2a820f"
        }
      },
      "type": "expiration",
      "resolution": {}
    }
  },
  {
    "id": "h:7f61115bf563af7e1a2e074bdd058d81f01dde4927b6bc6ef76a4a1ef1051501",
    "index": {
      "height": 204,
      "id": "bid:868a93d5bb1b411bc73e56db36b75bc1cfedc72002ea2e11a9a63af2d6724aa7"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 204,
    "type": "v2Transaction",
    "data": {
      "siafundInputs": [
        {
          "parent": {
            "id": "h:15c39ea191db4d09d7ea2377a3f5420b282bf5652896052f0f1ab8e1e3091888",
            "leafIndex": 1,
            "merkleProof": [
              "h:f511a305ffc38123784a15f622a4b3fa8fb33ee9f4819f520dbd74723be9b4fc",
              "h:ed462bec88bf447d34de9fa56f275577fd27d8d76f2614ee3763d058fe188dd6",
              "h:bf2f07cd074d36f55eb30ec3f7191da266e3f8f356d124f607a86fe0aef3073d",
              "h:e29d28b24d7f807c5d9d7c69e3c45fbfe67819a6c4204d2ee409bc01831f3c40",
              "h:839fef4a24b35fbcb287dd02368f0465cf9fb544655a96bebf54c74143408d8d",
              "h:f3ff212468e19ef921a614eabbc387e234e676ee1f1e4451d7abadd844a53b72",
              "h:e1f40a359b528d48f6e2c499688d8923a847234ec0e347605104d137372c0f0e",
              "h:c3a6bbde771ec2b73836e30eaebe4378f7c08ee9f01d1d78759ee3cdbc54dd26"
            ],
            "siafundOutput": {
              "value": 10000,
              "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
            },
            "claimStart": "0"
          },
          "claimAddress": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192",
          "satisfiedPolicy": {
            "policy": "uc(0,[0x999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40],1)",
            "signatures": [
              "sig:fd245848196a12eccfedc34efb7c9c46fc8ba58eaf6e5d93aca6471f05c41745c1b2c1382d61547cef506472b34de9afdbeb3c95d77ca08990a1fe00a5b92407"
            ]
          }
        }
      ],
      "siafundOutputs": [
        {
          "value": 10000,
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        }
      ],
      "minerFee": "0"
    }
  },
  {
    "id": "h:26707ee955165411fbd2b0e444670fc2b728e9275fee71ca8cd0e3d4c7c98037",
    "index": {
      "height": 203,
      "id": "bid:6d37359564b7c36fb55c50f48aab4c2ae7545ce9b93ff1ab2f9511d1f20865b7"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 203,
    "type": "v2Transaction",
    "data": {
      "siacoinInputs": [
        {
          "parent": {
            "id": "h:04960b29c57b0417a252f04dd164b4e53ea07aae6561e5534e808ca5f928d325",
            "leafIndex": 18446744073709551615,
            "merkleProof": [],
            "siacoinOutput": {
              "value": "10400000000000000000000000000",
              "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
            },
            "maturityHeight": 0
          },
          "satisfiedPolicy": {
            "policy": "uc(0,[0x999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40],1)",
            "signatures": [
              "sig:4c7958ca899ac442c1b0f3d1ba2960d658920c408cca77f71e96626fd328a356141ffcb048d3dcf41713b447269ad02493f8640e4fbb327160f949582aac8a04"
            ]
          }
        }
      ],
      "fileContractResolutions": [
        {
          "parent": {
            "id": "h:e773d79ce8ed3b5edf11572c3d56cc3908e6c0766479f09d21420df22ca416be",
            "leafIndex": 423,
            "merkleProof": [
              "h:dec7cb8813aa21ebaec3da1d3a521903305079c382b2e37b1cc8e3c53e66c2db",
              "h:48476f9fcc42b15359119ee17a9bc3d33b98e54e589fe9baaf6ddab9d8f6f617",
              "h:14b049a779a996ef3c771669d30517798ef026c95ab5be146cab98dc3854e8cf"
            ],
            "v2FileContract": {
              "filesize": 0,
              "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
              "proofHeight": 211,
              "expirationHeight": 221,
              "renterOutput": {
                "value": "10000000000000000000000000000",
                "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
              },
              "hostOutput": {
                "value": "0",
                "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
              },
              "missedHostValue": "0",
              "totalCollateral": "0",
              "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
              "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
              "revisionNumber": 0,
              "renterSignature": "sig:db264235ecadc89e63221e4e96347d560754d1f93939120c6d02c96e5207578e64067bd6a4313d9d84de019412d028ba98e182cde342f0cb4ffe1ec3f4783e03",
              "hostSignature": "sig:db264235ecadc89e63221e4e96347d560754d1f93939120c6d02c96e5207578e64067bd6a4313d9d84de019412d028ba98e182cde342f0cb4ffe1ec3f4783e03"
            }
          },
          "type": "renewal",
          "resolution": {
            "finalRevision": {
              "filesize": 0,
              "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
              "proofHeight": 211,
              "expirationHeight": 221,
              "renterOutput": {
                "value": "10000000000000000000000000000",
                "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
              },
              "hostOutput": {
                "value": "0",
                "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
              },
              "missedHostValue": "0",
              "totalCollateral": "0",
              "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
              "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
              "revisionNumber": 18446744073709551615,
              "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
              "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
            },
            "newContract": {
              "filesize": 0,
              "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
              "proofHeight": 221,
              "expirationHeight": 231,
              "renterOutput": {
                "value": "10000000000000000000000000000",
                "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
              },
              "hostOutput": {
                "value": "0",
                "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
              },
              "missedHostValue": "0",
              "totalCollateral": "0",
              "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
              "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
              "revisionNumber": 0,
              "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
              "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
            },
            "renterRollover": "0",
            "hostRollover": "0",
            "renterSignature": "sig:984dea37a3897f6287fd04630e0878df5518e4ae95ff1cba7fa72a87b74cc85774306bba8ff563353b2d6bbca50e331f3dcf54eca3b36f14eb01dfdd7c07d00e",
            "hostSignature": "sig:984dea37a3897f6287fd04630e0878df5518e4ae95ff1cba7fa72a87b74cc85774306bba8ff563353b2d6bbca50e331f3dcf54eca3b36f14eb01dfdd7c07d00e"
          }
        }
      ],
      "minerFee": "0"
    }
  },
  {
    "id": "h:d354cd57b55f6fae6926d2edc36978d5f03a3da3a96c93c9aace57a377efdf1e",
    "index": {
      "height": 203,
      "id": "bid:6d37359564b7c36fb55c50f48aab4c2ae7545ce9b93ff1ab2f9511d1f20865b7"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 203,
    "type": "v2Transaction",
    "data": {
      "siacoinInputs": [
        {
          "parent": {
            "id": "h:6aa56534396cbf177a45c7edaf3eb0e9f85dd9fa7419b3818ecbd262e9384374",
            "leafIndex": 421,
            "merkleProof": [
              "h:7d31531797157a7c9fa43c4a01dca0967a427ac19420d26b0259c39e0658dae7",
              "h:cab1fad8d5b9a116576db3c0d4e0334005d9ed562e9925e0513c4b2cfc94e9fe",
              "h:14b049a779a996ef3c771669d30517798ef026c95ab5be146cab98dc3854e8cf"
            ],
            "siacoinOutput": {
              "value": "256394172736732570239334030000",
              "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
            },
            "maturityHeight": 0
          },
          "satisfiedPolicy": {
            "policy": "uc(0,[0x999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40],1)",
            "signatures": [
              "sig:1ac1f25080ec675a8992a2174d6c6f068e6660141caccec40c5e95e3ab725e1f0547d57f1715a216f5ac4ccc81786d836d8b6f99e9d936fef31e8565b96b320c"
            ]
          }
        }
      ],
      "siacoinOutputs": [
        {
          "value": "10400000000000000000000000000",
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        },
        {
          "value": "245994172736732570239334030000",
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        }
      ],
      "minerFee": "0"
    }
  },
  {
    "id": "h:c342c0ed99ac9ee0155c17236bac9dbf93663e7ec25944727893b1faf03df30f",
    "index": {
      "height": 202,
      "id": "bid:0ef29ef4cd65042f22da4d70718522490177f3b3e73c525d964c48a46feb6dd7"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 202,
    "type": "v2Transaction",
    "data": {
      "siacoinInputs": [
        {
          "parent": {
            "id": "h:877d5b90eb3feb8dedb5de169e0fd5cc1fb1d8663224d1006f03922e868e7e4a",
            "leafIndex": 395,
            "merkleProof": [
              "h:f7338ec8ac8deee1d952c9134c58f77af74e592ca4921f4d93b4c91a6234ef30",
              "h:4a0b1a378f07efe0524e1d9b6448f48f616393e827b800fe8d48870cb8ed36aa",
              "h:efe8bf880371541af10816f960ce3172ab09d8e2885f9087828c764e1670d632",
              "h:abb482c19f1a14b21033b0b7b8304f685857a4f10d06fb20f172b253657e425b",
              "h:5dba3a456ed101f794a36e3396e375a88f8050e1a0b28bc2a15f105fbc44762a"
            ],
            "siacoinOutput": {
              "value": "266794172736732570239334030000",
              "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
            },
            "maturityHeight": 0
          },
          "satisfiedPolicy": {
            "policy": "uc(0,[0x999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40],1)",
            "signatures": [
              "sig:0a1ccb440df8b484ff402d60819a44a9cd7043e522ad275d9aa3b76171375a104a1cb9f623e677eb58953fe81653c23a0d6ff64d88333b5cedfd4ee54e076600"
            ]
          }
        }
      ],
      "siacoinOutputs": [
        {
          "value": "256394172736732570239334030000",
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        }
      ],
      "fileContracts": [
        {
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "proofHeight": 211,
          "expirationHeight": 221,
          "renterOutput": {
            "value": "10000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "hostOutput": {
            "value": "0",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          "missedHostValue": "0",
          "totalCollateral": "0",
          "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "revisionNumber": 0,
          "renterSignature": "sig:db264235ecadc89e63221e4e96347d560754d1f93939120c6d02c96e5207578e64067bd6a4313d9d84de019412d028ba98e182cde342f0cb4ffe1ec3f4783e03",
          "hostSignature": "sig:db264235ecadc89e63221e4e96347d560754d1f93939120c6d02c96e5207578e64067bd6a4313d9d84de019412d028ba98e182cde342f0cb4ffe1ec3f4783e03"
        }
      ],
      "minerFee": "0"
    }
  },
  {
    "id": "h:fc3bf63551d537d56d15a02da5f2ecb5d8de069c41eadf34327bfd8f130bd671",
    "index": {
      "height": 191,
      "id": "bid:4b98626b4d3fb1a9df52918cb9f3812a67ed4b99adcc405a8c06c6d75602be00"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 191,
    "type": "v2Transaction",
    "data": {
      "siacoinInputs": [
        {
          "parent": {
            "id": "h:ab6677558d6c344e449fe74677a4709ec689c9620bc73115c3526d04d7dabf2a",
            "leafIndex": 349,
            "merkleProof": [
              "h:94a176d2c91e7c14eea13f834647222301819bb85ee274f62b7f958663fb5154",
              "h:812a840fffc713436ba107fc58dbecfaa574f513bf09e391a603df20affd228f",
              "h:e46b612429e205b58843ad398b1f2dd31b11aebdd2aa0caac40d277905d4ca11",
              "h:a07408549e147d52e48b112a05bc632a19abc9f57fe2fea30efd945fdd01c49c",
              "h:56359fa49114d1ffdc14904cfdf9aff1e6f989ba8bc64d6f44218c73932688ec",
              "h:adffd0f07779af480239a099bcdbee317b3eb38796bbf43db061809d330379ad",
              "h:14815951f3861d371083dc342435d2017fe360d94b265fd6d9a8c6c4d6e2d048"
            ],
            "siacoinOutput": {
              "value": "277194172736732570239334030000",
              "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
            },
            "maturityHeight": 0
          },
          "satisfiedPolicy": {
            "policy": "uc(0,[0x999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40],1)",
            "signatures": [
              "sig:4689ce9f5673bc4d94f6e2da191cad0ca927d8a89b7f2431c428832ae612d37ad64e48c3deb416501dec438b52d704ca4c70ac2094d23c76d4514c85760b7401"
            ]
          }
        }
      ],
      "siacoinOutputs": [
        {
          "value": "266794172736732570239334030000",
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        }
      ],
      "fileContracts": [
        {
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "proofHeight": 200,
          "expirationHeight": 210,
          "renterOutput": {
            "value": "10000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "hostOutput": {
            "value": "0",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          "missedHostValue": "0",
          "totalCollateral": "0",
          "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "revisionNumber": 0,
          "renterSignature": "sig:97385f262a2f8db3bd29b072b0ab7cc6dbe01843af09c9010675b3ec7db8a96dd199b3ede4df4ada81d41ca3b5ccb2ad6bfaa01071438ec6fce72e5f18bcd40a",
          "hostSignature": "sig:97385f262a2f8db3bd29b072b0ab7cc6dbe01843af09c9010675b3ec7db8a96dd199b3ede4df4ada81d41ca3b5ccb2ad6bfaa01071438ec6fce72e5f18bcd40a"
        }
      ],
      "minerFee": "0"
    }
  },
  {
    "id": "h:2a1310fac16f79e12b518589b1ea5abfd3c8bd3da623727e5685caf8d6584cbc",
    "index": {
      "height": 170,
      "id": "bid:b3efdb29eb640b5d2e4bdd98a2a6f8c2837fdc54817ce229c522c36f6c75c576"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 170,
    "type": "v2Transaction",
    "data": {
      "siacoinInputs": [
        {
          "parent": {
            "id": "h:ac413200b271cf769da46acb0898ed3406a43bb73f4f94659d91065f78dbecd0",
            "leafIndex": 346,
            "merkleProof": [
              "h:b83ee7a234a6a278cca5348e794354613812946de9832e542780eae9ec636c17",
              "h:d1e4e9d91faa25f909cdd396ed1ee290770a69a12d666f7452465e2f32937657"
            ],
            "siacoinOutput": {
              "value": "287594172736732570239334030000",
              "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
            },
            "maturityHeight": 0
          },
          "satisfiedPolicy": {
            "policy": "uc(0,[0x999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40],1)",
            "signatures": [
              "sig:fb809431f79a1b94e2de6efbd78c1dcc9945ba12fc367f7afb159e3ade8447e5431a3f9ad5c57d08a1643416af94a9530d5a01194dee54a0b209f1ed6eb45c02"
            ]
          }
        }
      ],
      "siacoinOutputs": [
        {
          "value": "277194172736732570239334030000",
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        }
      ],
      "fileContracts": [
        {
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "proofHeight": 179,
          "expirationHeight": 189,
          "renterOutput": {
            "value": "10000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "hostOutput": {
            "value": "0",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          "missedHostValue": "0",
          "totalCollateral": "0",
          "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "revisionNumber": 0,
          "renterSignature": "sig:a51f56c532f331b8ee9fd9bd3a76c89bed8643f2a60be2d820f168d19c7dae73a737c0eef532b992845af2a4a3bfd4993f01a4b66f42f87366c9e50afa2a820f",
          "hostSignature": "sig:a51f56c532f331b8ee9fd9bd3a76c89bed8643f2a60be2d820f168d19c7dae73a737c0eef532b992845af2a4a3bfd4993f01a4b66f42f87366c9e50afa2a820f"
        }
      ],
      "minerFee": "0"
    }
  },
  {
    "id": "h:bae3d0b8a0934c54090ce546b6b56a079bbfc899900a2b891e44c887da695559",
    "index": {
      "height": 169,
      "id": "bid:747c7e17dd0d5397b9d91f8907750cc01d1cc2b4956008587214670a7fe4afb1"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 169,
    "type": "v2Transaction",
    "data": {
      "siacoinInputs": [
        {
          "parent": {
            "id": "h:409a5747120dbddb60bfca705142aeba7c8f940c1739484857667ef65a69379e",
            "leafIndex": 302,
            "merkleProof": [
              "h:afe2663b5c0f9660c3e11b0a5c31c34a0971ddb5c7ec6d3b6f1fd21b9b70a145",
              "h:50ed0ed44529a24a0e05eb0d6d07477427950d05c0f235d1d15410a6426c650c",
              "h:ff1fe1a3ad6966b5fad3a5797a37c594812e92dee0a6d2d78945b2c6a75913b0",
              "h:f93db49cf7d3894ac3ff569ffdf1095f22cc381217ecda2478f27ce07b555ccf",
              "h:795ce8a6c379d73bac9f2f2dd55f7b497dd3b335ea9a3a712f10730569e1f90c",
              "h:10974c113780409ab783dc38ab3277cb07e7209604ec29c0ddd178b32d908ef8"
            ],
            "siacoinOutput": {
              "value": "288594172736732570239334030000",
              "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
            },
            "maturityHeight": 0
          },
          "satisfiedPolicy": {
            "policy": "uc(0,[0x999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40],1)",
            "signatures": [
              "sig:d71087be0717a2d4510ef4fbd336957b3de02bec36f919edea1a03cbb92482a60c574e1f1da1397acf43f1348374b9153019ddac145e8b85f8c8cd233ffac30d"
            ]
          }
        }
      ],
      "siacoinOutputs": [
        {
          "value": "1000000000000000000000000000",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        {
          "value": "287594172736732570239334030000",
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        }
      ],
      "minerFee": "0"
    }
  },
  {
    "id": "h:069984b5fb252f664fee13888b9e9f7ec310f0fab3285ddf07d5cb7063aad078",
    "index": {
      "height": 149,
      "id": "bid:8cebc0436ccb78df060c0c4a34395368f5648fc644a97b2476a23f09fb680028"
    },
    "timestamp": "2024-06-22T04:22:33Z",
    "maturityHeight": 149,
    "type": "v1Transaction",
    "data": {
      "transaction": {
        "siacoinInputs": [
          {
            "parentID": "scoid:b468b83452fac38807af7943337eeef4695c9371b761a0fd8e4433d782b80d72",
            "unlockConditions": {
              "timelock": 0,
              "publicKeys": [
                "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40"
              ],
              "signaturesRequired": 1
            }
          }
        ],
        "siacoinOutputs": [
          {
            "value": "288594172736732570239334030000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          }
        ],
        "fileContracts": [
          {
            "filesize": 0,
            "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
            "windowStart": 158,
            "windowEnd": 168,
            "payout": "10405827263267429760665970000",
            "validProofOutputs": [
              {
                "value": "10000000000000000000000000000",
                "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
              }
            ],
            "missedProofOutputs": [
              {
                "value": "10000000000000000000000000000",
                "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
              }
            ],
            "unlockHash": "h:0000000000000000000000000000000000000000000000000000000000000000",
            "revisionNumber": 0
          }
        ],
        "signatures": [
          {
            "parentID": "h:b468b83452fac38807af7943337eeef4695c9371b761a0fd8e4433d782b80d72",
            "publicKeyIndex": 0,
            "coveredFields": {
              "wholeTransaction": true
            },
            "signature": "OwQ11DxbgVETVX2shCwG1Kc6NpEP3PovLJPlIq0MRsdlzA0rD1Flh98LcNQsqBLTkQZdZGDqVBsvAfELNVZVCw=="
          }
        ]
      },
      "spentSiacoinElements": [
        {
          "id": "h:b468b83452fac38807af7943337eeef4695c9371b761a0fd8e4433d782b80d72",
          "leafIndex": 299,
          "merkleProof": null,
          "siacoinOutput": {
            "value": "299000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "maturityHeight": 0
        }
      ],
      "spentSiafundElements": []
    }
  },
  {
    "id": "h:203c1616574e92afe4081bcaf75d53a4f2f0979b8ed7ece8e3fecf5d3be5cfba",
    "index": {
      "height": 148,
      "id": "bid:39a14960577954ce50d02b9c3ec88c9e0a358cfdc11f9be690cdce816391ae8f"
    },
    "timestamp": "2024-06-22T04:22:33Z",
    "maturityHeight": 148,
    "type": "v1Transaction",
    "data": {
      "transaction": {
        "siacoinInputs": [
          {
            "parentID": "scoid:d33175c0dad7df6d047a4ea1507862f157a122e56b7025397bbe5a25de9f1898",
            "unlockConditions": {
              "timelock": 0,
              "publicKeys": [
                "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40"
              ],
              "signaturesRequired": 1
            }
          }
        ],
        "siacoinOutputs": [
          {
            "value": "1000000000000000000000000000",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          {
            "value": "299000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          }
        ],
        "signatures": [
          {
            "parentID": "h:d33175c0dad7df6d047a4ea1507862f157a122e56b7025397bbe5a25de9f1898",
            "publicKeyIndex": 0,
            "coveredFields": {
              "wholeTransaction": true
            },
            "signature": "GCXLgThVtjDutfAv6d34mIGUSRmm+vPX74DgafZIj7axOcnKylvwc2oCiaPboeOCjVd5Pgs1CP3GglfaxbihDw=="
          }
        ]
      },
      "spentSiacoinElements": [
        {
          "id": "h:d33175c0dad7df6d047a4ea1507862f157a122e56b7025397bbe5a25de9f1898",
          "leafIndex": 3,
          "merkleProof": null,
          "siacoinOutput": {
            "value": "300000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "maturityHeight": 145
        }
      ],
      "spentSiafundElements": []
    }
  },
  {
    "id": "h:d33175c0dad7df6d047a4ea1507862f157a122e56b7025397bbe5a25de9f1898",
    "index": {
      "height": 1,
      "id": "bid:f3fcab43b1ac9588d503a2a986fc927f8b6571e9865ddf38c675008ab37b03a8"
    },
    "timestamp": "2024-06-22T04:22:31Z",
    "maturityHeight": 146,
    "type": "miner",
    "data": {
      "siacoinElement": {
        "id": "h:d33175c0dad7df6d047a4ea1507862f157a122e56b7025397bbe5a25de9f1898",
        "leafIndex": 3,
        "merkleProof": null,
        "siacoinOutput": {
          "value": "300000000000000000000000000000",
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        },
        "maturityHeight": 145
      }
    }
  },
  {
    "id": "h:1e390d3fdb4b462c8250cbdfea9f82a2f867a7cf850c14c08fb7fbb650a71486",
    "index": {
      "height": 0,
      "id": "bid:aefb375d7075d783f89130e858609c4da5c61882baca0764f56c925332ca911c"
    },
    "timestamp": "2023-01-13T08:53:20Z",
    "maturityHeight": 0,
    "type": "v1Transaction",
    "data": {
      "transaction": {
        "siacoinOutputs": [
          {
            "value": "1000000000000000000000000000000000000",
            "address": "addr:3d7f707d05f2e0ec7ccc9220ed7c8af3bc560fbee84d068c2cc28151d617899e1ee8bc069946"
          }
        ],
        "siafundOutputs": [
          {
            "value": 10000,
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          }
        ]
      },
      "spentSiacoinElements": [],
      "spentSiafundElements": []
    }
  }
]                                                                                                                                                                                                                                   
Jun 27, 2024

Ran into an issue with the UI trying to spend an immature UTXO. I don't believe there's a reason to make the UI filter the UTXO list, so I changed the endpoints to only include matured UTXOs.

Jun 27, 2024

This adds a created bool argument to the (Update).ForEach methods, allowing callers to identify ephemeral elements by checking for created && spent (or, in the case of file contracts, created && resolved.

This is very useful for any callers who care about persistently tracking unspent outputs. Normally, the code for doing so looks like this:

cau.ForEachSiacoinElement(func(sce types.SiacoinElement, spent bool) {
    if spent {
        deleteUTXO(sce.ID)
    } else {
        insertUTXO(sce)
    }
})

but this is subtly buggy: if the element was ephemeral, spent will be true, so we'll try to delete it; but since it's ephemeral, it's not in the set, so there's nothing to delete! Whether or not this causes problems depends on how deleteUTXO is implemented. Specifically, if you assert that an element must exist in order to be deleted, that assert will fail.

To avoid this, we need a way to detect whether an element is ephemeral. chain.DBStore attempted to do this by checking sce.LeafIndex == types.EphemeralLeafIndex. However, this doesn't work: ephemeral elements are assigned leaf indices just like regular outputs, so that condition is never satisfied! This eventually lead to a panic: ephemeral outputs within a reverted block would be added to the UTXO set (instead of being ignored), and if a future block references that same output, the DB gets confused and crashes.

Adding a created flag seemed like the most direct of doing this. Another option would be to always skip the ephemeral elements in the ForEach methods, and add a new method (or methods) for accessing only the ephemeral elements. This is attractive, since it doesn't break any existing code, and most callers want to skip ephemeral elements anyway. Ultimately, though, I decided against it; it pollutes the namespace, and it's one more thing you "just need to know" in order to use the API properly. Plus it makes the name "ForEach" a lie. Better to keep everything in one place.

Jun 27, 2024
Jun 27, 2024
  • Minor tweak to slab health update to speed it up by making use of indices
  • Make sure recording a host scans doesn't abort after 30 seconds when db is under heavy load
  • Make sure recording price tables doesn't abort after 30 seconds when db is under heavy load
  • Register new price tables in the background, unblocking operations faster and preventing the record operation from being cancelled after a timeout
Jun 27, 2024
Jun 27, 2024

The sector roots RPC used to return all sector roots, this was fixed in https://github.com/SiaFoundation/hostd/commit/e6dfc96fa0f8aab45ce0c87de0f87ffe477f83a5 and released in https://github.com/SiaFoundation/hostd/releases/tag/v1.0.2-beta.4 . We should ignore the error for old hosts.

Jun 26, 2024

Added a few more migrations since they are rather small.

Jun 25, 2024

This changes the policy to stringify and parse the unlock key in the v1 format specifier:hex key. You can currently create a valid PolicyTypeUnlockCondition using an UnlockKey without an ed25519 algorithm, but can't reverse it. This doesn't cause any issues since the v2 validation checks will reject it, but it's slightly annoying that a valid serialization can't be reversed.

also: I could be wrong, but I believe v1 treated unlock conditions with unknown key algorithms as, effectively, anyone-can-spend. I'm not sure if it was ever actually seen on-chain, but after the require height any unlock condition that used a different algorithm will no longer be spendable.

Current:

sp := SpendPolicy{PolicyTypeUnlockConditions(UnlockConditions{
	Timelock: 0,
	PublicKeys: []UnlockKey{
		{
			Algorithm: NewSpecifier("blank"),
			Key:       frand.Bytes(40),
		},
	},
	SignaturesRequired: 1,
})}
sp.String() // uc(0,[0x97ef92d4c07713b7a3a0e17000e59a9ef6e27402eaef0b5c9ae5cb0da50a78dd0a04e63d0e78e60d],1)

New:

sp := SpendPolicy{PolicyTypeUnlockConditions(UnlockConditions{
	Timelock: 0,
	PublicKeys: []UnlockKey{
		{
			Algorithm: NewSpecifier("blank"),
			Key:       frand.Bytes(40),
		},
	},
	SignaturesRequired: 1,
})}
sp.String() // uc(0,[blank:97ef92d4c07713b7a3a0e17000e59a9ef6e27402eaef0b5c9ae5cb0da50a78dd0a04e63d0e78e60d],1)
Jun 25, 2024

areq has an alert for unexpected response size (very old host), figured getting rid of the exact math is probably ok, reused maxMerkleProofResponseSize to avoid duplicating the const

Jun 25, 2024

On gompa rclone wouldn't work via localhost anymore since HostBucketEnabled was set to true. Problem is without this setting, access per proper domain (e.g. bucket.example.com) doesn't work anymore but with it IPs and localhost will be rewritten incorrectly.

The solution is to allow for configuring HostBucketBases which is already supported by gofakes3 and allows for configuring only specific domains for which the bucket is extracted from the host. That way localhost and 127.0.0.1 still work but if specified bucket.example.com will also work.

Jun 25, 2024
Jun 24, 2024

Forces the wallet and address event queries to use the proper index since the query planner did not want to select it automatically. This significantly improves performance for wallets with lots of events.

Jun 24, 2024

Bumps the all-dependencies group with 2 updates: go.sia.tech/core and go.sia.tech/coreutils.

Updates go.sia.tech/core from 0.2.8-0.20240621235715-5054a28dc43d to 0.2.8

Commits

Updates go.sia.tech/coreutils from 0.0.6 to 0.0.7

Commits
  • b818c37 Merge pull request #63 from SiaFoundation/dependabot/go_modules/go.sia.tech/c...
  • c6f47c2 build(deps): bump go.sia.tech/core from 0.2.7 to 0.2.8
  • 3012a5a Merge pull request #62 from SiaFoundation/nate/siafund-events
  • 04b2041 wallet: combine common event structs, add siafund claim support
  • See full diff in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jun 24, 2024
Jun 24, 2024

The worker cache requires setting up the worker in a way we did not have to do before, namely registering webhooks with the bus so the worker gets notified when certain events take place on the bus. In single node setups or when you're on localhost everything works fine but in a distributed setup we are missing a way to define where the bus can reach the worker API. I came up with serviceAddress for now but I've gone back and forth quite a bit. I like serviceAddress because it ties in closely with docker services, I think we should call it something-address to be consistent with the rest of the config.

I verified it using the following docker-compose file:

version: "3.9"

services:
  bus:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
    container_name: bus
    ports:
      - "9981:9980"
    environment:
      - RENTERD_AUTOPILOT_ENABLED=false
      - RENTERD_WORKER_ENABLED=false
      - RENTERD_WORKER_REMOTE_ADDRS=http://worker:9980/api/worker
      - RENTERD_WORKER_API_PASSWORD=test
      - RENTERD_API_PASSWORD=test
      - RENTERD_SEED=[seed here]

  worker:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
    container_name: worker
    ports:
      - "9982:9980"
    environment:
      - RENTERD_AUTOPILOT_ENABLED=false
      - RENTERD_BUS_REMOTE_ADDR=http://bus:9980/api/bus
      - RENTERD_BUS_API_PASSWORD=test
      - RENTERD_WORKER_API_PASSWORD=test
      - RENTERD_WORKER_SERVICE_ADDR=http://worker:9980
      - RENTERD_API_PASSWORD=test
      - RENTERD_SEED=[seed here]
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://localhost:9980/api/worker || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 5

Fixes https://github.com/SiaFoundation/renterd/issues/1302

Jun 24, 2024

Bumps the all-dependencies group with 1 update: github.com/minio/minio-go/v7.

Updates github.com/minio/minio-go/v7 from 7.0.71 to 7.0.72

Release notes

Sourced from github.com/minio/minio-go/v7's releases.

Bugfix Release

What's Changed

Full Changelog: https://github.com/minio/minio-go/compare/v7.0.71...v7.0.72

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jun 24, 2024
Jun 21, 2024

@n8maninger noticed a flipped conditional in validateV2FileContracts; after fixing it, I updated TestValidateV2Block to update the ChainIndexElement proofs, but the test still failed -- with commitment hash mismatch, which is a weird error. Further investigation revealed that V2Block.EncodeTo was mutating the block. Specifically, it was nil-ing out the V2StorageProof history proof, which is why this wasn't caught earlier: since the test wasn't updating the proofs in the first place, they were always nil, so EncodeTo didn't affect them. Anyway, this cascade of failures has all been fixed now :P

Jun 21, 2024
Jun 21, 2024

fixes #451

Hello! I've been looking at this codebase for a couple of days now and saw a task I thought was approachable for a first PR. This change addresses the issue by modifying the following files:

  1. ExplorerDatum.tsx
  2. ValueCopyable.tsx
  3. Block/index.ts

These are backward-compatible changes, as far as I know, given the optional nature of the props and how the text value in ValueCopyable is calculated.

Issue: ValueCopyable, via ExplorerDatum, displays the Block hash's first 12 characters, which are typically 0s, with a trailing ellipsis.

Solution: Display the last 12 characters instead, adding the ellipsis at the front.

How: Add optional maxLength and ellipsisDir props to ExplorerDatum, pass them to ValueCopyable (adding the optional ellipsisDir prop here), and rewrite the rendered text variable to take advantage of these props, if they exist. When ellipsisDir="left" is passed to ExplorerDatum, the last [maxLength] characters are displayed with an ellipsis in front. When maxLength={#} is passed, it overwrites the default maxLength, displaying that many characters before or after the ellipsis. The default ellipsis direction is on the right, as it exists elsewhere today, and the maxLength prop in ValueCopyable was already set up well to work without the prop. Now, anywhere ExplorerDatum and ValueCopyable or only ValueCopyable are used, there are these optional properties to provide more granular display control.

Further considerations (optional):

  1. In Block/index.ts, I have only added the ellipsisDir prop set "left". I didn't extend maxLength, but one certainly could, now. I think there are some design questions to ponder in terms of display at < ~500px widths.
  2. With the ellipsis on the left, allowing one to display the final characters of very long text, which I'm guessing are more important than the front characters, there aren't a lot of options out there, in terms of a straight CSS solution. Usually, they consist of hacks with non-typical elements. Other javascript solutions could revolve around logic based on window.clientWidth or window.getBoundingClientRect(), but I've seen some of these solutions and, in my experience, they can be a bit unreliable (the latter function reading 0 for the first milliseconds, for example) and unwieldy in terms of working from hard numerical value breakpoints.
  3. One solution to extend the displayed characters could be to flex-col ExplorerDatum when it reaches a certain breakpoint (depending on how long you want to go), and, at that point, you might want to center ValueCopyable. Maybe not, though. It's not something I explorered.
  4. I added this ellipsis left functionality in Block/index.ts for both the 'Block hash' and 'Miner payout address' values, only so they would match. You could certainly pull the index out of the map here and apply it only to the block hash.
  5. I think the Tooltip component could be useful here, but it would require a more thorough refactor of ExplorerDatum which I felt might be beyond the scope of this request. You would probably want to move the logical operator render logic inside the return up above the return, perhaps in a useCallback, and then optionally wrap the result of that logic in a Tooltip, if necessary. Figuring out the key for the value you want to display is a barrier.
  6. Finally, I added props and imports to the end of things to keep a cleaner diff, but I would probably move maxLength and ellipsisDir next to each other in props and move an import like useMemo to the top. Just wanted to keep things simple to review.

Happy to edit anything to your satisfaction. Thanks!

Jun 21, 2024
Jun 21, 2024
  • b13c3b51: Fixed an issue where renaming a file would throw an error.
  • b13c3b51: Fixed an issue where the empty directory state was showing an empty bucket message.
Jun 20, 2024
Jun 20, 2024
  • Fixed an issue where renaming a file would throw an error.
  • Fixed an issue where the empty directory state was showing an empty bucket message.
  • Added e2e tests for:
    • can create directory
    • delete directory
    • drag and drop target uploads
    • upload file within directory
    • rename file
    • delete a file
    • re-upload same file
    • navigate up and down directories
    • delete bucket with contents, contents first, then bucket
Jun 20, 2024

EventV2ContractResolution is missing the resolution type. Embeds V2FileContractResolution to get the custom json encoding that includes the extra type field.

{
  "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
  "index": {
    "height": 0,
    "id": "bid:0000000000000000000000000000000000000000000000000000000000000000"
  },
  "timestamp": "0001-01-01T00:00:00Z",
  "maturityHeight": 0,
  "type": "v2ContractResolution",
  "data": {
    "parent": {
      "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
      "leafIndex": 0,
      "merkleProof": null,
      "v2FileContract": {
        "filesize": 0,
        "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
        "proofHeight": 0,
        "expirationHeight": 0,
        "renterOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "hostOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "missedHostValue": "0",
        "totalCollateral": "0",
        "renterPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "hostPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "revisionNumber": 0,
        "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
      }
    },
    "type": "expiration",
    "resolution": {}
  }
}
{
  "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
  "index": {
    "height": 0,
    "id": "bid:0000000000000000000000000000000000000000000000000000000000000000"
  },
  "timestamp": "0001-01-01T00:00:00Z",
  "maturityHeight": 0,
  "type": "v2ContractResolution",
  "data": {
    "parent": {
      "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
      "leafIndex": 0,
      "merkleProof": null,
      "v2FileContract": {
        "filesize": 0,
        "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
        "proofHeight": 0,
        "expirationHeight": 0,
        "renterOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "hostOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "missedHostValue": "0",
        "totalCollateral": "0",
        "renterPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "hostPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "revisionNumber": 0,
        "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
      }
    },
    "type": "finalization",
    "resolution": {
      "filesize": 0,
      "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
      "proofHeight": 0,
      "expirationHeight": 0,
      "renterOutput": {
        "value": "0",
        "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
      },
      "hostOutput": {
        "value": "0",
        "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
      },
      "missedHostValue": "0",
      "totalCollateral": "0",
      "renterPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
      "hostPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
      "revisionNumber": 0,
      "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
      "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    }
  }
}
{
  "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
  "index": {
    "height": 0,
    "id": "bid:0000000000000000000000000000000000000000000000000000000000000000"
  },
  "timestamp": "0001-01-01T00:00:00Z",
  "maturityHeight": 0,
  "type": "v2ContractResolution",
  "data": {
    "parent": {
      "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
      "leafIndex": 0,
      "merkleProof": null,
      "v2FileContract": {
        "filesize": 0,
        "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
        "proofHeight": 0,
        "expirationHeight": 0,
        "renterOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "hostOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "missedHostValue": "0",
        "totalCollateral": "0",
        "renterPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "hostPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "revisionNumber": 0,
        "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
      }
    },
    "type": "renewal",
    "resolution": {
      "finalRevision": {
        "filesize": 0,
        "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
        "proofHeight": 0,
        "expirationHeight": 0,
        "renterOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "hostOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "missedHostValue": "0",
        "totalCollateral": "0",
        "renterPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "hostPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "revisionNumber": 0,
        "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
      },
      "newContract": {
        "filesize": 0,
        "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
        "proofHeight": 0,
        "expirationHeight": 0,
        "renterOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "hostOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "missedHostValue": "0",
        "totalCollateral": "0",
        "renterPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "hostPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "revisionNumber": 0,
        "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
      },
      "renterRollover": "0",
      "hostRollover": "0",
      "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
      "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    }
  }
}
{
  "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
  "index": {
    "height": 0,
    "id": "bid:0000000000000000000000000000000000000000000000000000000000000000"
  },
  "timestamp": "0001-01-01T00:00:00Z",
  "maturityHeight": 0,
  "type": "v2ContractResolution",
  "data": {
    "parent": {
      "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
      "leafIndex": 0,
      "merkleProof": null,
      "v2FileContract": {
        "filesize": 0,
        "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
        "proofHeight": 0,
        "expirationHeight": 0,
        "renterOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "hostOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "missedHostValue": "0",
        "totalCollateral": "0",
        "renterPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "hostPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "revisionNumber": 0,
        "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
      }
    },
    "type": "storage proof",
    "resolution": {
      "proofIndex": {
        "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
        "leafIndex": 0,
        "merkleProof": null,
        "chainIndex": {
          "height": 0,
          "id": "bid:0000000000000000000000000000000000000000000000000000000000000000"
        }
      },
      "leaf": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
      "proof": null
    }
  }
}
Jun 18, 2024

Not really a fix but better safe than sorry

Jun 18, 2024

Probably got lost in a merge somewhere, but we should definitely only broadcast the update when we're synced or otherwise a fresh start is horrible.

Jun 18, 2024

Bumps the all-dependencies group with 2 updates: go.sia.tech/core and go.sia.tech/coreutils.

Updates go.sia.tech/core from 0.2.6 to 0.2.7

Commits
  • 36ea9c7 Merge pull request #170 from SiaFoundation/generic-encoder
  • f64b216 types: Add encoding_test.go
  • 261959d types: Implement generic encoder functions
  • eb021a0 Merge pull request #169 from SiaFoundation/dependabot/go_modules/all-dependen...
  • 86747f5 build(deps): bump the all-dependencies group with 2 updates
  • c0d52ee group dependencies
  • See full diff in compare view

Updates go.sia.tech/coreutils from 0.0.5 to 0.0.6

Commits
  • 83105c6 Merge pull request #61 from SiaFoundation/nate/update-core
  • 4f2d2b1 go.mod: update core dependency
  • 1ac89c8 Merge pull request #60 from SiaFoundation/dependabot/go_modules/golang.org/x/...
  • a0d3ed3 build(deps): bump golang.org/x/crypto from 0.23.0 to 0.24.0
  • See full diff in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jun 17, 2024

Refactors events to include the original transaction data. This lets external services verify the signatures and other transaction data. The event types and events almost match the ones from coreutils with the addition of a relevant field and a different v1 transaction event type so that inflow and outflow can be calculated instead of stored on the event.

Adds two new endpoints and ensures a consistent event structure for confirmed and unconfirmed events.

  • /api/wallet/:walletID/events/unconfirmed returns any unconfirmed events related to a wallet
  • /api/addresses/:addr/events/unconfirmed returns any unconfirmed events related to an address

Event Types:

  • miner
  • foundation
  • siafundClaim
  • v1Transaction
  • v1ContractResolution
  • v2Transaction
  • v2ContractResolution

Unconfirmed events will have an index of tip.index.height+1 and an empty id

 {
                "id": "h:731c8e75212fd850aef9f9b3f0a1373350743dea905966e0c819348e8fc226f1",
                "index": {
                        "height": 75207,
                        "id": "bid:0000000000000000000000000000000000000000000000000000000000000000"
                },
                "timestamp": "2024-06-13T17:06:54.551676-07:00",
                "maturityHeight": 75207,
                "type": "v1Transaction",
                "data": {
                        "raw": {
                                "siacoinInputs": [
                                        {
                                                "parentID": "scoid:e54b12c6a0f11ab3d89944c72df05e463e4e906b966906b266d92a65509d5053",
                                                "unlockConditions": {
                                                        "timelock": 0,
                                                        "publicKeys": [
                                                                "ed25519:0778d0e03c2f1b1e5e42d6f0f580d46587d992ad6381d8cae52b998463e0f633"
                                                        ],
                                                        "signaturesRequired": 1
                                                }
                                        }
                                ],
                                "siacoinOutputs": [
                                        {
                                                "value": "19999996070000000000000000000",
                                                "address": "addr:2a95add7cfc95b5c484a787c15b912e491876ca2f39982b62495049520acf798bf2e2cf6c326"
                                        },
                                        {
                                                "value": "932206165193017337982514690933",
                                                "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
                                        }
                                ],
                                "minerFees": [
                                        "36000000000000000000000"
                                ],
                                "signatures": [
                                        {
                                                "parentID": "h:e54b12c6a0f11ab3d89944c72df05e463e4e906b966906b266d92a65509d5053",
                                                "publicKeyIndex": 0,
                                                "coveredFields": {
                                                        "wholeTransaction": true
                                                },
                                                "signature": "KzCjMr66ZhzqzyBIHCzewr+9nK5e1B+nSNXexv4j0KEvqb5Vs0laQWBYnn03yUxKForhkPgm7uFCKwAmklT8Cw=="
                                        }
                                ]
                        },
                        "spentSiacoinElements": [
                                {
                                        "id": "h:e54b12c6a0f11ab3d89944c72df05e463e4e906b966906b266d92a65509d5053",
                                        "leafIndex": 1423020,
                                        "merkleProof": [],
                                        "siacoinOutput": {
                                                "value": "952206197263017337982514690933",
                                                "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
                                        },
                                        "maturityHeight": 0
                                }
                        ],
                        "spentSiafundElements": null
                },
                "relevant": [
                        "addr:2a95add7cfc95b5c484a787c15b912e491876ca2f39982b62495049520acf798bf2e2cf6c326"
                ]
        }
{
  "id": "h:084bf558939d7f60bf28be3176f31aea015ee892178d55a1892311be80c60ab4",
  "index": {
    "height": 62057,
    "id": "bid:000000251dbf2b6c8e9c6c53a4be4d5b7a2f70647a5aa98ba1d2d5f2a276bad6"
  },
  "timestamp": "2024-03-26T19:51:58Z",
  "maturityHeight": 62202,
  "type": "miner",
  "data": {
    "siacoinElement": {
      "id": "h:084bf558939d7f60bf28be3176f31aea015ee892178d55a1892311be80c60ab4",
      "leafIndex": 305758,
      "merkleProof": null,
      "siacoinOutput": {
        "value": "2546749203167233134721992",
        "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
      },
      "maturityHeight": 62201
    }
  }
}
{
  "id": "h:084bf558939d7f60bf28be3176f31aea015ee892178d55a1892311be80c60ab4",
  "index": {
    "height": 62057,
    "id": "bid:000000251dbf2b6c8e9c6c53a4be4d5b7a2f70647a5aa98ba1d2d5f2a276bad6"
  },
  "timestamp": "2024-03-26T19:51:58Z",
  "maturityHeight": 62202,
  "type": "v1ContractResolution",
  "data": {
    "fileContract": {
      "id": "h:0cc01878047a41b37db25bbe4a33be0063c20a172e89886bb15766221ad6aeb6",
      "leafIndex": 285511,
      "merkleProof": [],,
      "fileContract": {
        "filesize": 3221225472,
        "fileMerkleRoot": "h:538a633e94e0339fa3553c0ea2f37dba10cd81701cb22e352cacfd6eba4b42b6",
        "windowStart": 62056,
        "windowEnd": 62200,
        "payout": "4123337324945734946756928",
        "validProofOutputs": [
          {
            "value": "1415777966105618149114936",
            "address": "addr:7838f42a584f7247d4bc9d85e985fa1bbc42a0c55e942cc31204be7f9959091ceb62e4824eee"
          },
          {
            "value": "2546749203167233134721992",
            "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
          }
        ],
        "missedProofOutputs": [
          {
            "value": "1415777966105618149114936",
            "address": "addr:7838f42a584f7247d4bc9d85e985fa1bbc42a0c55e942cc31204be7f9959091ceb62e4824eee"
          },
          {
            "value": "2211527439234234844347336",
            "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
          },
          {
            "value": "335221763932998290374656",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          }
        ],
        "unlockHash": "h:15d57447a0db498c01f1643d04ae626629fa79013dd68b11f7fa06e2ba6d4160",
        "revisionNumber": 873
      }
    },
    "siacoinElement": {
      "id": "h:084bf558939d7f60bf28be3176f31aea015ee892178d55a1892311be80c60ab4",
      "leafIndex": 305758,
      "merkleProof": null,
      "siacoinOutput": {
        "value": "2546749203167233134721992",
        "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
      },
      "maturityHeight": 62201
    },
    "missed": false
  }
}

The value should be calculated using event.siacoinElement.siacoinOutput.value

{
  "id": "h:56dd0953f4a217fcb5bfae7927cbb7b08424cde3dcd1b47248fa09cb04e9f607",
  "index": {
    "height": 75191,
    "id": "bid:00000000d1cd5be659e21c9624cf58bcc1b69c08bee5ca85b8e5f5e5a9b94f86"
  },
  "timestamp": "2024-06-13T21:01:25Z",
  "maturityHeight": 75191,
  "type": "v1Transaction",
  "data": {
    "raw": {
      "siacoinInputs": [
        {
          "parentID": "scoid:cd6b3d83888ddca8a99b6860bf34b69f8346c7d6a7c8256a5e20492d755014e3",
          "unlockConditions": {
            "timelock": 0,
            "publicKeys": [
              "ed25519:745229eecd616452608dfc4c136cbb712aae0221c505fd21344cbaff02408654"
            ],
            "signaturesRequired": 1
          }
        },
      ],
      "siacoinOutputs": [
        {
          "value": "16603618098633177701291326236",
          "address": "addr:c6a179d96cc82f7814acd638c41250422205e8ed130c8d65481a3e15c30aaa195a8659547b0f"
        },
      ],
      "fileContracts": [
        {
          "filesize": 1623455694848,
          "fileMerkleRoot": "h:5a0b3f23bb7005c3f3cf0e391b1754ca2b78f4d0bd1a0c62c07552bdaa34af9b",
          "windowStart": 77206,
          "windowEnd": 77350,
          "payout": "6527511983870317298497483904",
          "validProofOutputs": [
            {
              "value": "5294306986854930764839779264",
              "address": "addr:c6a179d96cc82f7814acd638c41250422205e8ed130c8d65481a3e15c30aaa195a8659547b0f"
            },
            {
              "value": "978632029644444159016304640",
              "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
            }
          ],
          "missedProofOutputs": [
            {
              "value": "5294306986854930764839779264",
              "address": "addr:c6a179d96cc82f7814acd638c41250422205e8ed130c8d65481a3e15c30aaa195a8659547b0f"
            },
            {
              "value": "775417498778363966804983808",
              "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
            },
            {
              "value": "203214530866080192211320832",
              "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
            }
          ],
          "unlockHash": "h:54ecb4a10f7cffc1b89dcab6fef0887e6d83a86619faec9048fc27e36615d9a1",
          "revisionNumber": 0
        }
      ],
      "fileContractRevisions": [
        {
          "parentID": "fcid:5bda1c141daeb490689267736a8e9814f063009252b0da874b024f566b1213ec",
          "unlockConditions": {
            "timelock": 0,
            "publicKeys": [
              "ed25519:367b5e02363065999e175326d77f93f9bcfff5437ba8b0348209b8b34cc85dea",
              "ed25519:04e326a61076ca088cf5a9ea93eefcbb1fea144575b0c5dc1d02f7a298d4b816"
            ],
            "signaturesRequired": 2
          },
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "windowStart": 76198,
          "windowEnd": 76342,
          "payout": "340282366920938463463374607431768211455",
          "validProofOutputs": [
            {
              "value": "5255684964149517545928885024",
              "address": "addr:c6a179d96cc82f7814acd638c41250422205e8ed130c8d65481a3e15c30aaa195a8659547b0f"
            },
            {
              "value": "959591735219963162430677956",
              "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
            }
          ],
          "missedProofOutputs": [
            {
              "value": "5255684964149517545928885024",
              "address": "addr:c6a179d96cc82f7814acd638c41250422205e8ed130c8d65481a3e15c30aaa195a8659547b0f"
            },
            {
              "value": "959591735219963162430677956",
              "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
            }
          ],
          "unlockHash": "h:54ecb4a10f7cffc1b89dcab6fef0887e6d83a86619faec9048fc27e36615d9a1",
          "revisionNumber": 18446744073709552000
        }
      ],
      "minerFees": [
        "122880000000000000000000"
      ],
      "signatures": [
        {
          "parentID": "h:5bda1c141daeb490689267736a8e9814f063009252b0da874b024f566b1213ec",
          "publicKeyIndex": 0,
          "coveredFields": {
            "fileContracts": [
              0
            ],
            "fileContractRevisions": [
              0
            ]
          },
          "signature": "0cCUX6CpD1LwejSV4yuGGxgdPPpXfvh0n6IQWwMHBT1sBpSUJ2S4zbQ63+qhlWygHA00D0OGTsfevmjBib8BBw=="
        }
      ]
    },
    "spentSiacoinElements": [
      {
        "id": "h:cd6b3d83888ddca8a99b6860bf34b69f8346c7d6a7c8256a5e20492d755014e3",
        "leafIndex": 1422177,
        "merkleProof": null,
        "siacoinOutput": {
          "value": "1311143590699235482074695625",
          "address": "addr:c6a179d96cc82f7814acd638c41250422205e8ed130c8d65481a3e15c30aaa195a8659547b0f"
        },
        "maturityHeight": 0
      }
    ],
    "spentSiafundElements": []
  }
}

The outflow should be calculated by summing the relevant siacoinElements in event.spentSiacoinElements. The inflow should be calculate by summing the relevant event.transaction.siacoinOutputs. The value is inflow-outflow

Jun 17, 2024
Jun 15, 2024
Jun 15, 2024

Fuzz decoding of SpendPolicy which is probably has the most complicated decoding logic of all the types. I have been running for ~30 minutes and coverage has not flatlined yet.

Run with:

$ go test -fuzz FuzzSpendPolicy ./types
Jun 14, 2024
  • The change address in the test was not for the same wallet
Jun 12, 2024

Fixes #399

Jun 12, 2024
  • Migrate walletd e2e tests from mocked API tests to live fixtures.
  • Updated tests for creating wallet, recovering wallet, viewing txns, sending siacoin, generating addresses, rescanning.
Jun 12, 2024

Adds a command to configure a walletd node similar to hostd and renterd.

Jun 12, 2024
Jun 12, 2024

Adds a new endpoint /api/events/:id to get an event by its ID. This is primarily only useful when running in full index mode to lookup arbitrary transactions.

Jun 11, 2024

Adds EncodeSlice, EncodeSliceCast, EncodeSliceFn, and their decoder counterparts, as well as Cast methods for increased type safety. This makes most encoding methods more succinct, but the real motivation was that it allows us to centralized the handling of malicious slice lengths (see discussion on #166). I will grudgingly admit that generics solved a real problem here. 😝

I'm not crazy about the API; it would be nicer if we could somehow unify these three functions, and if we could ditch the Cast methods. I explored replacing EncodeSliceFn with a BasicEncodable type (wrapping uint64, bool, etc.), but it was kinda gross, requiring a run-time type-switch on every encode call.

I ran one manual benchmark to see whether this had a big performance impact, and it looked ok. We should benchmark it more thoroughly though.

Jun 11, 2024
Jun 11, 2024
Jun 10, 2024
  • Test hostd config behaviours: saving, re-announce warning, basic vs advanced view, auto vs manual max collateral.
  • Test renterd config behaviours: saving, spending estimates, basic vs advanced view, auto vs manual allowance, system recommendations.
  • renterd-e2e and hostd-e2e setup, fixtures, and configuration for running against daemon.
Jun 10, 2024

Increases the scanning batch size from 64 to 1000

Jun 10, 2024
Jun 10, 2024

Bumps the all-dependencies group with 2 updates: golang.org/x/crypto and golang.org/x/sys.

Updates golang.org/x/crypto from 0.23.0 to 0.24.0

Commits
  • 332fd65 go.mod: update golang.org/x dependencies
  • 0b431c7 x509roots/fallback: update bundle
  • 349231f ssh: implement CryptoPublicKey on sk keys
  • 44c9b0f ssh: allow server auth callbacks to send additional banners
  • 67b1361 sha3: reenable s390x assembly
  • 477a5b4 sha3: make APIs usable with zero allocations
  • 59b5a86 sha3: disable s390x assembly
  • 10f366e sha3: simplify XOR functions
  • See full diff in compare view

Updates golang.org/x/sys from 0.20.0 to 0.21.0

Commits
  • 673e0f9 unix: skip ethtool driver test for busy interface
  • 6943ab6 unix/linux: update glibc to 2.39
  • 92f3ad6 unix: update to Linux kernel 6.9
  • f34bb9f windows: add net user enum
  • 6dfb94e unix: add types for SOCK_DIAG
  • See full diff in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jun 10, 2024

Bumps the all-dependencies group with 3 updates: go.sia.tech/core, go.sia.tech/coreutils and golang.org/x/term.

Updates go.sia.tech/core from 0.2.5 to 0.2.6

Commits
  • c89664e Merge pull request #166 from SiaFoundation/nate/clear-decoder-buffer
  • 5c81d31 ci: upgrade workflows
  • 76c8780 ci: fix golangci-lint, fix linter errors
  • 223630e upgrade Go
  • b6076d9 internal: drain channel when stopping timer (#165)
  • 9d2a157 consensus: lint suggestions
  • 9ec8e49 types: clear decoder buffer when read encounters an error
  • 31a155d gateway: revert memory reuse
  • See full diff in compare view

Updates go.sia.tech/coreutils from 0.0.5-0.20240531191724-1de8f76a2179 to 0.0.5

Commits

Updates golang.org/x/term from 0.20.0 to 0.21.0

Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jun 10, 2024
Jun 10, 2024
Jun 10, 2024

Bumps golang.org/x/sys from 0.20.0 to 0.21.0.

Commits
  • 673e0f9 unix: skip ethtool driver test for busy interface
  • 6943ab6 unix/linux: update glibc to 2.39
  • 92f3ad6 unix: update to Linux kernel 6.9
  • f34bb9f windows: add net user enum
  • 6dfb94e unix: add types for SOCK_DIAG
  • See full diff in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Jun 10, 2024

Bumps golang.org/x/crypto from 0.23.0 to 0.24.0.

Commits
  • 332fd65 go.mod: update golang.org/x dependencies
  • 0b431c7 x509roots/fallback: update bundle
  • 349231f ssh: implement CryptoPublicKey on sk keys
  • 44c9b0f ssh: allow server auth callbacks to send additional banners
  • 67b1361 sha3: reenable s390x assembly
  • 477a5b4 sha3: make APIs usable with zero allocations
  • 59b5a86 sha3: disable s390x assembly
  • 10f366e sha3: simplify XOR functions
  • See full diff in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Jun 10, 2024

Fixes the following error on hostd when renterd trims sectors for large contracts:

failed to commit contract modifications: transaction failed (attempt 1): failed to trim sectors: failed to delete contract sector roots: failed to delete contract sector roots: too many SQL variables

renterd's batch size when trimming is 500000 sectors while the SQLite query parameter limit is around 32000. This change is negligibly slower (~2 microseconds per sector)

Before

BenchmarkTrimSectors-10           189414             91529 ns/op            189414 sectors          8892 B/op        207 allocs/op
PASS
ok      go.sia.tech/hostd/persist/sqlite        115.901s

After

BenchmarkTrimSectors-10           179298             94208 ns/op            179298 sectors          9768 B/op        252 allocs/op
PASS
ok      go.sia.tech/hostd/persist/sqlite        102.815s
Jun 7, 2024

Ensures the decoder's buffer is cleared when Read encounters an error. This should fix OOM issues we're seeing when syncing Mainnet. It may also fix https://github.com/SiaFoundation/hostd/issues/406, but I haven't looked deep into that one yet.

Jun 7, 2024

I'm not entirely sure that we need to do it per se in these three instances but in the context of the memory leaks we're seeing I think it's good practice to drain the timer channel when stopping them.

Jun 5, 2024

Arequipa is receiving large merkle proof responses from then hosts. Some 40MB+ in size. A slow host can't transmit that data within 60 seconds so I increased it to 5 minutes.

Jun 4, 2024
  • Fixed an issue where the transaction information would not show in the dialog.
Jun 1, 2024
May 31, 2024
May 30, 2024

Something crashed Arequipa by returning a huge OutputLength. 10MiB should be plenty.

May 30, 2024

(note: confirmed this fixes memory leak on my node)

May 28, 2024

Bumps github.com/cloudflare/cloudflare-go from 0.95.0 to 0.96.0.

Release notes

Sourced from github.com/cloudflare/cloudflare-go's releases.

v0.96.0

ENHANCEMENTS:

  • access_application: Add Refresh Token, Custom Claims, and PKCE Without Client Secret support for OIDC SaaS configurations (#1981)
  • ruleset: add support for action parameters fonts and disable_rum (#1832)

DEPENDENCIES:

  • deps: bumps bflad/action-milestone-comment from 1 to 2 (#1991)
  • deps: bumps github.com/hashicorp/go-retryablehttp from 0.7.5 to 0.7.6 (#1993)
  • deps: bumps goreleaser/goreleaser-action from 5.0.0 to 5.1.0 (#1992)
Changelog

Sourced from github.com/cloudflare/cloudflare-go's changelog.

0.96.0 (May 22nd, 2024)

ENHANCEMENTS:

  • access_application: Add Refresh Token, Custom Claims, and PKCE Without Client Secret support for OIDC SaaS configurations (#1981)
  • ruleset: add support for action parameters fonts and disable_rum (#1832)

DEPENDENCIES:

  • deps: bumps bflad/action-milestone-comment from 1 to 2 (#1991)
  • deps: bumps github.com/hashicorp/go-retryablehttp from 0.7.5 to 0.7.6 (#1993)
  • deps: bumps goreleaser/goreleaser-action from 5.0.0 to 5.1.0 (#1992)
Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
May 22, 2024

While unlikely, if longQueryDuration is set to 0 or Prepare takes a long time,, Prepare will not return an error.

May 21, 2024

Fixes an issue where sector migrations were not being counted towards the global write stats

May 20, 2024

Bumps go.sia.tech/web/walletd from 0.20.0 to 0.21.0.

Release notes

Sourced from go.sia.tech/web/walletd's releases.

walletd@0.21.0

Minor Changes

Patch Changes

Commits
  • 56d6fe5 chore: release packages
  • b6505a6 fix: privacy settings host map, daemon version formatting
  • 0ba9281 feat: renterd health partial slab
  • b8a5a3b fix: renterd gpu, map colors
  • 73e7297 fix: alerts
  • bcc1485 feat: renterd autopilot and not enough contract onboarding
  • 8da5666 fix: move connectivity/login off consensus
  • 8b69b77 feat: failed to migrate slab alert objects
  • 1ed477f fix: renterd state, show build version
  • 2e77e9c fix: hostd error alert
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
May 20, 2024

Fixes #160

May 18, 2024

This went undetected because we haven't properly tested v2 storage proofs. Notably, we had a TestStorageProofRoot test, but it was basically just a regression test -- it compared the output to whatever storageProofRoot returned the first time we ran the test, so it didn't detect the faulty logic.

May 17, 2024

This PR adjusts the client-side validation for IPs.

  • The connect to peer dialog now supports IPv6 addresses.
  • The host blocklist dialog now supports adding IPv6 addresses.
May 17, 2024

Removes the eventData interface and the custom json encoding in favor of a field on the Event struct. This does remove the limited guarantees we have about the data aligning with the type, but in practice its not a significant enough downside to justify the custom marshalling.

@alexfreska this will break the UI... Again.. Actually, it will not

{
  "id": "h:a0f44763dbb2d2f95eec0f20f18bda75e7026297b6172f73449f3c3d67c2099c",
  "index": {
    "height": 997,
    "id": "bid:000000004d7b155547e163ea4933c28cf2171c43c0c02e50c04f6718f6af37f0"
  },
  "timestamp": "2023-01-16T02:06:49Z",
  "maturityHeight": 997,
  "relevant": null,
  "type": "transaction",
  "data": {
    "siacoinInputs": [
      {
        "id": "h:35b81e41f594d7faeb88bd8eaac2eaa68ce99fe1c8fe5f0cba8fafa65ab3a70e",
        "leafIndex": 0,
        "merkleProof": null,
        "siacoinOutput": {
          "value": "1000000000000000000000000000000000000",
          "address": "addr:3d7f707d05f2e0ec7ccc9220ed7c8af3bc560fbee84d068c2cc28151d617899e1ee8bc069946"
        },
        "maturityHeight": 0
      }
    ],
    "siacoinOutputs": [
      {
        "id": "h:674c765a9708e24528549c2ecf9c6cc99501a1d4909b9aa18ec64f14bccfef41",
        "leafIndex": 2133,
        "merkleProof": null,
        "siacoinOutput": {
          "value": "100000000000022500000000000000000000",
          "address": "addr:70cd9249053dc5d575aa74385a730fbe16b1c7997ddadc37a5d9abc8dbf12017cbd4bb3c48da"
        },
        "maturityHeight": 0
      },
      {
        "id": "h:4e4dc8a4b2147ba5783d803e645be14c54f1276f45a76c1cad060e41ded3733f",
        "leafIndex": 2134,
        "merkleProof": null,
        "siacoinOutput": {
          "value": "899999999999977500000000000000000000",
          "address": "addr:6f2ff24633525e854d0106031daf6cc666d5b8610ff9fbbd676a1d1a95903c794e054de7a634"
        },
        "maturityHeight": 0
      }
    ],
    "siafundInputs": [],
    "siafundOutputs": [],
    "fileContracts": null,
    "v2FileContracts": null,
    "hostAnnouncements": null,
    "fee": "0"
  }
}
May 15, 2024
May 15, 2024

This PR expands test coverage in merkle to 95.1% and overall consensus coverage to 76.2% Now that we have the coverage for DecodeFrom and EncodeTo I'm planning to add a roundtrip later, assuming you find such tests to be valuable.

May 15, 2024

Adds support for a yaml configuration file similar to hostd and renterd.

directory: /etc/walletd
autoOpenWebUI: true
http:
  address: :9980
  password: sia is cool
consensus:
  network: mainnet
  gatewayAddress: :9981
  bootstrap: false
  enableUPnP: false
index:
  mode: partial # full, partial, none (full index will index the entire blockchain, partial will only index addresses that are registered in the wallet, none will treat the database as read-only and not index any new data)
  batchSize: 64 # max number of blocks to index at a time (increasing this will increase scan speed, but also increase memory and cpu usage)
log:
  level: info # global log level
  stdout:
    enabled: true # enable logging to stdout
    level: debug # override the global log level for stdout
    enableANSI: false
    format: human # human or JSON
  file:
    enabled: true # enable logging to a file
    level: debug # override the global log level for the file
    path: /var/log/walletd.log
    format: json # human or JSON
May 15, 2024

This PR expands test coverage in policy.go to 86.5% and overall types coverage to 59.7%

May 14, 2024

Changes the read and write RPC to send internal errors and alert+log the actual error.

May 14, 2024

Fixes a small race introduced when the handling of tpool utxos changed

May 14, 2024

Bumps github.com/cloudflare/cloudflare-go from 0.94.0 to 0.95.0.

Release notes

Sourced from github.com/cloudflare/cloudflare-go's releases.

v0.95.0

ENHANCEMENTS:

  • access_application: add support for policies array (#1956)
  • access_application: add support for scim_config (#1921)
  • access_policy: add support for reusable policies (#1956)
  • dlp: add support for zt risk behavior configuration (#1887)

BUG FIXES:

  • access_application: fix scim configuration authentication json marshalling (#1959)

DEPENDENCIES:

  • deps: bumps dependabot/fetch-metadata from 2.0.0 to 2.1.0 (#1839)
  • deps: bumps github.com/urfave/cli/v2 from 2.27.1 to 2.27.2 (#1861)
  • deps: bumps golang.org/x/net from 0.24.0 to 0.25.0 (#1974)
  • deps: bumps golangci/golangci-lint-action from 4 to 5 (#1845)
  • deps: bumps golangci/golangci-lint-action from 5 to 6 (#1975)
Changelog

Sourced from github.com/cloudflare/cloudflare-go's changelog.

0.95.0 (May 8th, 2024)

ENHANCEMENTS:

  • access_application: add support for policies array (#1956)
  • access_application: add support for scim_config (#1921)
  • access_policy: add support for reusable policies (#1956)
  • dlp: add support for zt risk behavior configuration (#1887)

BUG FIXES:

  • access_application: fix scim configuration authentication json marshalling (#1959)

DEPENDENCIES:

  • deps: bumps dependabot/fetch-metadata from 2.0.0 to 2.1.0 (#1839)
  • deps: bumps github.com/urfave/cli/v2 from 2.27.1 to 2.27.2 (#1861)
  • deps: bumps golang.org/x/net from 0.24.0 to 0.25.0 (#1974)
  • deps: bumps golangci/golangci-lint-action from 4 to 5 (#1845)
  • deps: bumps golangci/golangci-lint-action from 5 to 6 (#1975)
Commits
  • 4788db7 Update CHANGELOG.md
  • 3f615f5 update CHANGELOG
  • d4a7f8d Merge pull request #1975 from cloudflare/dependabot/github_actions/golangci/g...
  • a1fda3a Merge branch 'master' into dependabot/github_actions/golangci/golangci-lint-a...
  • 0026065 Merge pull request #1974 from cloudflare/dependabot/go_modules/golang.org/x/n...
  • 04c2ceb add CHANGELOG for #1975
  • e3ab1b2 build(deps): bump golangci/golangci-lint-action from 5 to 6
  • be510c4 add CHANGELOG for #1974
  • e35c25d build(deps): bump golang.org/x/net from 0.24.0 to 0.25.0
  • a8e30d4 Merge pull request #1959 from khiller-cf/master
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
May 8, 2024

Accidentally left the default as full index mode

May 8, 2024

This PR updates the root cache in the ContractManager when a contract gets renewed, essentially copying over the roots from existing to renewal. I'm keeping this as a DRAFT @n8maninger because it's merely to illustrate the problem, the real fix is (likely) something else entirely and this will also need a thorough regression test. I don't mind taking a stab at it but I felt this is probably something that you will want to write the fix for yourself.

Context: In renterd we have a test called TestUploadDownloadSpending that fails locally with AppendSector: proof verification failed on the branch pj/subscription-api. The reason it fails is because hostd builds the proof of a recently renewed contract without sector roots. I sprinkled some logging in the host's contract manager and also the proof code in core and found that we seem to update the database just fine on renewal but the next time the contract updater fetches the roots from the store it returns 0 roots. Causing the host to try and build a proof where secRoots is empty causing it to fail when verifying. I considered the possibility that something was removing those roots but I added panics in all delete and trim methods and those aren't hit during the test.

DEBUG PJ: host: contract manager: store renew contract fcid:d0ddaa094b8082ec760af191a241403846b89136ee1b6343f42bda1044a4e434 -> fcid:9fe0027ea0f4e28861fffcc86a06a93969e49acf98fa18d60de7919f89293c7e
DEBUG PJ: store: renew fcid:d0ddaa094b8082ec760af191a241403846b89136ee1b6343f42bda1044a4e434 -> fcid:9fe0027ea0f4e28861fffcc86a06a93969e49acf98fa18d60de7919f89293c7e updated 3 roots
DEBUG PJ: host: contract updater:  fcid:9fe0027ea0f4e28861fffcc86a06a93969e49acf98fa18d60de7919f89293c7e append sector, new sector roots cnt 1
DEBUG PJ: host: contract updater: fcid:9fe0027ea0f4e28861fffcc86a06a93969e49acf98fa18d60de7919f89293c7e current sector roots cnt 1
DEBUG PJ: core0.2.3: BuildDiffProof
actions: [{Type:Append A:0 B:0 Data:[]}]
secRoots: []
treeHas: []
leafHas: []
DEBUG PJ: core0.2.3: VerifyDiffProof
actions: [{Type:Append A:0 B:0 Data:[]}]
numleav: 3
treeHas: []
leafHas: []
oldRoot: h:5927721564a242691a0ca9d58f810087ca838fe5205989417296cc6181939067
newRoot: h:c076a802cc2791cb30a710a1977e88e540abff86d091014117ed8e0321c43a66
appRoot: [h:c076a802cc2791cb30a710a1977e88e540abff86d091014117ed8e0321c43a66]
OK: false

Couple of things I find especially odd/interesting is that it passes on CI, so somehow this is a race condition, and also if we really consider the contract to be empty after renewal, even for a short period of time, this would wreak some serious havoc on production so it's probably somehow not that big of an issue or a really small window or something.

May 8, 2024

Adds "Full" and "None" indexing modes. The indexing mode can only be set once and cannot be changed since it changes how the state tree is stored.

"Partial" is the default. It only stores the state and events for addresses that are connected to a wallet.

"Full" will store the entire state of the blockchain regardless of addresses loaded into the wallet. It will also throw an error if the user attempts to trigger a scan with /wallet/scan

"None" will not process chain updates and treat the chain state as read-only. This isn't particularly useful now, but it will be nice when networked databases are supported.

May 8, 2024
  • Fixed an issue where clearing some configuration fields would crash the app due to how recommendations were being calculated.
  • The configuration recommendations now instruct the user to first fill all fields.
  • Fixed an issue where the recommendations bar was overlapping notifications.
May 7, 2024
May 7, 2024

@peterjan, is this enough to fix the race condition, or do I need to change the deferred release to only be called when the transaction should be dropped?

May 7, 2024

Bumps go.sia.tech/core from 0.2.2 to 0.2.3.

Commits
  • f9d44a4 Merge pull request #148 from new0nebit/flourish
  • fdfc700 Merge pull request #150 from SiaFoundation/surpass
  • 54775af Merge pull request #152 from SiaFoundation/dependabot/go_modules/golang.org/x...
  • 71ccc09 build(deps): bump golang.org/x/crypto from 0.21.0 to 0.22.0
  • c5cb20b Improve SpendPolicy and SatisfiedPolicy tests based on feedback
  • 3b09dcb consensus: Add (State).SufficientlyHeavierThan
  • b038144 Add Test Coverage for SatisfiedPolicy and enhance SpendPolicy tests
  • See full diff in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
May 7, 2024

Bumps golang.org/x/term from 0.19.0 to 0.20.0.

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
May 7, 2024

Bumps golang.org/x/term from 0.19.0 to 0.20.0.

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
May 7, 2024

Bumps golang.org/x/sys from 0.19.0 to 0.20.0.

Commits
  • 7d69d98 unix: extend support for z/OS
  • 7758090 cpu: add support for sve2 detection
  • 9a28524 windows: drop go version tags for unsupported versions
  • 27dc90b unix: update to Linux kernel 6.4
  • See full diff in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
May 6, 2024

Bumps go.sia.tech/core from 0.2.2 to 0.2.3.

Commits
  • f9d44a4 Merge pull request #148 from new0nebit/flourish
  • fdfc700 Merge pull request #150 from SiaFoundation/surpass
  • 54775af Merge pull request #152 from SiaFoundation/dependabot/go_modules/golang.org/x...
  • 71ccc09 build(deps): bump golang.org/x/crypto from 0.21.0 to 0.22.0
  • c5cb20b Improve SpendPolicy and SatisfiedPolicy tests based on feedback
  • 3b09dcb consensus: Add (State).SufficientlyHeavierThan
  • b038144 Add Test Coverage for SatisfiedPolicy and enhance SpendPolicy tests
  • See full diff in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
May 6, 2024

Bumps golang.org/x/sys from 0.19.0 to 0.20.0.

Commits
  • 7d69d98 unix: extend support for z/OS
  • 7758090 cpu: add support for sve2 detection
  • 9a28524 windows: drop go version tags for unsupported versions
  • 27dc90b unix: update to Linux kernel 6.4
  • See full diff in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
May 6, 2024

Bumps golang.org/x/crypto from 0.22.0 to 0.23.0.

Commits
  • 905d78a go.mod: update golang.org/x dependencies
  • ebb717d ssh: validate key type in SSH_MSG_USERAUTH_PK_OK response
  • 0da2a6a openpgp: fix function name in comment
  • 5defcc1 sha3: fix Sum results for SHAKE functions on s390x
  • See full diff in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
May 3, 2024

This changes the wallet.Event JSON serialization to match the Go struct. Unfortunately, this will break the UI again @alexfreska.

  • Adds the maturityHeight field. The UI should use this to distinguish between received-but-not-spendable payouts (maybe lower the opacity or add a "lock" icon).
  • Changes the val field to data to match the rest of walletd.
{
  "id": "h:13271ead1070290c9cbe39ed7a15aa1107a27029479858ee9ab2fcc237ed4aa0",
  "timestamp": "2024-05-01T11:35:03Z",
  "index": {
    "height": 68278,
    "id": "bid:000000009db92b8834aed7809ebe3ff0184e632e8333bba3802de8cd10d2fc86"
  },
  "maturityHeight": 68423,
  "relevant": [
    "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
  ],
  "type": "contract payout",
  "data": {...}
}
May 3, 2024
  • Moved the pinned currency change threshold to advanced mode settings.
May 3, 2024
  • Adds a walletd-js library.
import { Walletd } from '@siafoundation/walletd-js'

const walletd = Walletd({
  api: 'http://localhost:9980/api',
  password: 'password1337',
})

const events = await walletd.walletEvents({
  params: {
    id: 'wallet-1',
    limit: 10,
    offset: 0,
  },
})
const peers = await walletd.syncerPeers()
console.log(events.data, peers.data)
May 3, 2024
  • Adds a hostd-js library.
import { Hostd } from '@siafoundation/hostd-js'

export async function example() {
  const hostd = Hostd({
    api: 'http://localhost:9980/api',
    password: 'password1337',
  })
  const state = await hostd.stateHost()
  const volumes = await hostd.volumes()
  console.log(state.data, volumes.data)
}
May 2, 2024

Fixes #85

May 1, 2024

2 line change to close statements that were not closed

Apr 16, 2024

I started writing this code during the last hackathon for fun, practicing writing test cases. But I didn't finish it because I had to switch to the main task regarding consensus coverage. I felt bad for wipe out a work that had been done, so I ended up finishing the code and also making some changes to it. Initially, I was only aiming to cover the SatisfiedPolicy but got carried away and started covering the PolicyTypeAbove and PolicyTypePublicKey, completely overlooking the fact that you had already done this 😅 Anyway, here it is. I hope that this alternative approach and the additional scenarios will prove valuable to you 🙏

Apr 16, 2024
Apr 15, 2024

Bumps golang.org/x/sys from 0.18.0 to 0.19.0.

Commits
  • cabba82 windows: use uint32 for serial comm flags for consistency
  • 1a50d97 windows: add serial comm functions
  • 95f07ec x/sys/windows: add func windows.DisconnectNamedPipe(handle Handle) (err error)
  • 4be02d3 unix: expose mmap calls on z/OS
  • See full diff in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Apr 15, 2024

Bumps golang.org/x/crypto from 0.21.0 to 0.22.0.

Commits
  • d042a39 go.mod: update golang.org/x dependencies
  • b92bf94 ssh: respect MaxAuthTries also for "none" auth attempts
  • 6f79b5a ssh: add server side multi-step authentication
  • 8d0d405 x/crypto/chacha20: cleanup chacha_ppc64le.s
  • b91329d all: remove redundant words in comments and fix some typos
  • See full diff in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Apr 4, 2024

Before

goos: linux
goarch: amd64
pkg: go.sia.tech/core/internal/blake2b
cpu: AMD EPYC 7B13 64-Core Processor                
BenchmarkBLAKE2b/SumLeaves-128           4167430               290.8 ns/op       880.38 MB/s           0 B/op          0 allocs/op
BenchmarkBLAKE2b/SumNodes-128            3793945               285.3 ns/op       897.44 MB/s           0 B/op          0 allocs/op
PASS
ok      go.sia.tech/core/internal/blake2b       4.610s

After

goos: linux
goarch: amd64
pkg: go.sia.tech/core/internal/blake2b
cpu: AMD EPYC 7B13 64-Core Processor                
BenchmarkBLAKE2b/SumLeaves-128           6697410               176.7 ns/op      1448.80 MB/s           0 B/op          0 allocs/op
BenchmarkBLAKE2b/SumNodes-128            5853004               181.6 ns/op      1409.40 MB/s           0 B/op          0 allocs/op
PASS
ok      go.sia.tech/core/internal/blake2b       4.376s
Mar 30, 2024
Mar 19, 2024

Cherry-picked from #142

Mar 15, 2024
Old: "~2.529 mS"
New: "2.529378333356156158367 mS"

We discussed removing the SI units as well, and using SC exclusively (i.e. the example above would be 2.529378333356156158367 mS), but there was less consensus on that.

Since String is now exact, ExactString has been removed; if you want raw Hastings values, you can use Big or fmt.Sprintf("%d", c). If you want a rounded value, you can use standard approaches to round the float64 returned by Siacoins.

Mar 7, 2024

Bumps golang.org/x/sys from 0.5.0 to 0.18.0.

Commits
  • 360f961 unix: add API for fsconfig system call
  • 7ff74af unix: drop go version tags for unsupported versions
  • 6b4eab5 unix: suppress ENOMEM errors from sysctl's implementing Uname(uname *Utsname)...
  • 2f2cc5d unix: update IFLA and NETKIT constants with Linux kernel 6.7
  • 914b96c windows: support ill-formed UTF-16 in UTF16PtrToString
  • 511ec84 Revert "windows: support nil done parameter in ReadFile and WriteFile"
  • 628365d windows: support nil done parameter in ReadFile and WriteFile
  • bef1bd8 unix: move mksyscall regexp to package level variables
  • 5710a32 unix/linux: update Linux kernel to 6.7
  • b3ce6a3 windows: build env_windows_test.go only go Go 1.21 and above
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Mar 7, 2024

Bumps golang.org/x/crypto from 0.0.0-20220507011949-2cf3adece122 to 0.21.0.

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Mar 7, 2024