{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":322336927,"defaultBranch":"main","name":"go-dvote","ownerLogin":"mvdan","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2020-12-17T15:32:59.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/3576549?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1726084028.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"bee45d5dbd2b65042ec175b2b36ebc408895df1d","ref":"refs/heads/go1.23-more","pushedAt":"2024-09-11T19:47:08.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"all: use slices.Backward from Go 1.23\n\nAnd simplify the surrounding code slightly.","shortMessageHtmlLink":"all: use slices.Backward from Go 1.23"}},{"before":"ea954949b0b41fdb8ad6e239425ccf596247387e","after":null,"ref":"refs/heads/updates-2","pushedAt":"2024-09-11T19:28:17.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}},{"before":"51c2214b4e33d37832720736de557a8d7bc4c0c7","after":null,"ref":"refs/heads/1354-tx-proto","pushedAt":"2024-09-11T19:28:17.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}},{"before":"5493ed375b242bf9cff9dc2778e27e58eafa93fd","after":null,"ref":"refs/heads/1.23-more","pushedAt":"2024-09-11T19:28:17.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}},{"before":null,"after":"5493ed375b242bf9cff9dc2778e27e58eafa93fd","ref":"refs/heads/1.23-more","pushedAt":"2024-09-09T21:34:50.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"vochain/indexer: update go-sqlite3 to v1.14.23","shortMessageHtmlLink":"vochain/indexer: update go-sqlite3 to v1.14.23"}},{"before":"eb78e98609c26c23386145427098b9a19853b8a9","after":"51c2214b4e33d37832720736de557a8d7bc4c0c7","ref":"refs/heads/1354-tx-proto","pushedAt":"2024-08-29T21:26:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"api: make protoFormat a bit safer to use\n\nGive it a better name, as it has little to do with formatting.\nMake it return bytes, which is what we need.\nDon't let it silently ignore errors, which could cause issues.\nUse the Marshal protobuf func, as Format is only for debugging.","shortMessageHtmlLink":"api: make protoFormat a bit safer to use"}},{"before":null,"after":"eb78e98609c26c23386145427098b9a19853b8a9","ref":"refs/heads/1354-tx-proto","pushedAt":"2024-08-28T23:14:56.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"api: make protoFormat a bit safer to use\n\nGive it a better name, as it has little to do with formatting.\nMake it return bytes, which is what we need.\nDon't let it silently ignore errors, which could cause issues.\nUse the Marshal protobuf func, as Format is only for debugging.","shortMessageHtmlLink":"api: make protoFormat a bit safer to use"}},{"before":"81bdaa3fbe34f50cd0255ee51ef9f831d7b6eb69","after":"ea954949b0b41fdb8ad6e239425ccf596247387e","ref":"refs/heads/updates-2","pushedAt":"2024-08-25T10:37:50.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"go.mod: update ipfs/kubo to v0.29.0\n\nAlong with all the IPFS, libp2p, and other updates that it brings.\nFor once, it seems like there are zero breaking changes for us.\n\nNote that go-ipfs-blockstore has been moved to boxo/blockstore.","shortMessageHtmlLink":"go.mod: update ipfs/kubo to v0.29.0"}},{"before":null,"after":"81bdaa3fbe34f50cd0255ee51ef9f831d7b6eb69","ref":"refs/heads/updates-2","pushedAt":"2024-08-19T22:19:01.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"go.mod: update cometbft from alpha.1 to rc.1\n\nThe only breaking change is UpdateValidator, which is now either\na new constructor or a new struct type.","shortMessageHtmlLink":"go.mod: update cometbft from alpha.1 to rc.1"}},{"before":"903f24f578c1a853e17ff768c5c434c88b96959a","after":null,"ref":"refs/heads/updates","pushedAt":"2024-08-19T22:01:32.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}},{"before":"73570d6c1ed58f5babfb29791351f64cbf250ff1","after":null,"ref":"refs/heads/search-hex-lower","pushedAt":"2024-08-19T22:01:32.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}},{"before":"bf8f15e414f9c3d7b5a1466b950e5b57f72d3d4c","after":"903f24f578c1a853e17ff768c5c434c88b96959a","ref":"refs/heads/updates","pushedAt":"2024-08-17T21:58:12.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"go.mod: update a few easy dependencies\n\nStaying away from others like IPFS or cometbft as they tend to\ncause breakages at nearly every significant upgrade.","shortMessageHtmlLink":"go.mod: update a few easy dependencies"}},{"before":null,"after":"bf8f15e414f9c3d7b5a1466b950e5b57f72d3d4c","ref":"refs/heads/updates","pushedAt":"2024-08-17T13:37:30.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"go.mod: update a few easy dependencies\n\nStaying away from others like IPFS or cometbft as they tend to\ncause breakages at nearly every significant upgrade.","shortMessageHtmlLink":"go.mod: update a few easy dependencies"}},{"before":null,"after":"73570d6c1ed58f5babfb29791351f64cbf250ff1","ref":"refs/heads/search-hex-lower","pushedAt":"2024-07-06T13:08:38.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"vochain/indexer: lowercase hex search terms when querying\n\nSince the SQL query uses INSTR with LOWER and HEX, the input hex string\nwill never match if it contains any uppercase characters.\nNormalize the input string as lowercase to avoid that issue.\n\nIn particular, uppercase letters can happen due to\nhttps://eips.ethereum.org/EIPS/eip-55.\n\nFixes #1348.","shortMessageHtmlLink":"vochain/indexer: lowercase hex search terms when querying"}},{"before":"1d760cc921da7a9a705a37bc9e17993487ded122","after":null,"ref":"refs/heads/indexer-vote-weight-json","pushedAt":"2024-05-28T09:05:53.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}},{"before":null,"after":"1d760cc921da7a9a705a37bc9e17993487ded122","ref":"refs/heads/indexer-vote-weight-json","pushedAt":"2024-05-28T08:44:21.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"vochain/indexer: Vote.Weight is JSON-encoded in sqlite\n\nMultiple fields like EncryptionKeyIndexes and Weight are encoded to JSON\nin sqlite to store structured data and for consistency,\nand we decoded the JSON when querying, except for Vote.Weight:\n\n \"weight\": \"\\\"1\\\"\",\n\nAdd a test, which failed before the fix, and fix it.","shortMessageHtmlLink":"vochain/indexer: Vote.Weight is JSON-encoded in sqlite"}},{"before":"98b33cf32d2f718dcd050b81407bcf1447fd5141","after":null,"ref":"refs/heads/bumps","pushedAt":"2024-05-21T08:39:20.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}},{"before":null,"after":"98b33cf32d2f718dcd050b81407bcf1447fd5141","ref":"refs/heads/bumps","pushedAt":"2024-05-06T10:18:14.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"update a few non-critical dependencies\n\nNone of these require any changes in our code or break any tests.","shortMessageHtmlLink":"update a few non-critical dependencies"}},{"before":"db223355d53994e135be69f656ac28ca257b45ad","after":null,"ref":"refs/heads/types","pushedAt":"2024-04-23T10:55:35.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}},{"before":null,"after":"db223355d53994e135be69f656ac28ca257b45ad","ref":"refs/heads/types","pushedAt":"2024-04-14T20:26:13.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"remove deepsource config file as we no longer use it","shortMessageHtmlLink":"remove deepsource config file as we no longer use it"}},{"before":"3435499d4a7f92ecd7bb6d6838325ebc42f47146","after":null,"ref":"refs/heads/updates","pushedAt":"2024-04-03T08:41:40.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}},{"before":null,"after":"3435499d4a7f92ecd7bb6d6838325ebc42f47146","ref":"refs/heads/updates","pushedAt":"2024-03-24T22:28:15.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"update go-ethereum\n\nIts next version should let us update the shared pebble dependency to v1.","shortMessageHtmlLink":"update go-ethereum"}},{"before":"13e688c24e3e04ca794c44cb8693e4262863ed5e","after":null,"ref":"refs/heads/state-clone","pushedAt":"2024-03-24T22:11:38.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}},{"before":"eb82cf52c61c31b47572f0b888993864a0692817","after":null,"ref":"refs/heads/indexer-proto","pushedAt":"2024-03-24T22:11:38.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}},{"before":null,"after":"eb82cf52c61c31b47572f0b888993864a0692817","ref":"refs/heads/indexer-proto","pushedAt":"2024-03-17T23:06:49.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"vochain/indexer: move away from protojson\n\nWe are starting to use sqlite backup snapshots from the indexer\nas a way to bootstrap one node from another, and this system requires\nthe snapshots to be deterministic so that they may be hashed.\n\nWe encountered issues where protojson-encoded column values\nhad inconsistent whitespace depending on each node,\nand after some investigation, we found the culprit:\nhttps://go-review.googlesource.com/c/protobuf/+/194037\n\nSince protojson is explicitly non-deterministic, to the point that it\ninserts random spaces depending on the hash of the binary,\navoid it entirely and use proto encoding instead.\n\nWe had chosen protojson for the same reason that we encode other\nstructured bits of data in encoding/json: sqlite has some native\nsupport for JSON, meaning it is a bit more flexible than binary formats.\n\nEven though proto is also not a stable format per se,\nwe already use it as a deterministic encoding in the state messages,\nand it does follow a relatively strict specification,\nso it seems to be deterministic enough for us in practice.\n\nNote that this is a breaking change for indexer databases;\nany node with an existing indexer database should throw it away.\nThe alternative was to write a SQL migration with Go code\nto decode protojson and re-encode as proto, but we decided that wasn't\nworth the effort.","shortMessageHtmlLink":"vochain/indexer: move away from protojson"}},{"before":"a332ef4b3799b88f3f076529e72a139c8785bb50","after":"13e688c24e3e04ca794c44cb8693e4262863ed5e","ref":"refs/heads/state-clone","pushedAt":"2024-03-02T16:21:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"vochain/state: be consistent about copying slices\n\nValidSIKRoots documents that the caller should not modify the result.\nNone of the callers currently modify the result either,\nso stop making a copy of the outer slice.\n\nMoreover, the inner byte slices are not copied, so a caller could still\nget the first []byte and modify its contents. To be safe against that,\nwe would need to do a nested cloning of slices, which is too much.\n\nWhile here, I noticed that Vote.DeepCopy didn't actually make a copy\nof VoterID, which is of type []byte, so it does need copying too.","shortMessageHtmlLink":"vochain/state: be consistent about copying slices"}},{"before":null,"after":"a332ef4b3799b88f3f076529e72a139c8785bb50","ref":"refs/heads/state-clone","pushedAt":"2024-03-02T15:57:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"vochain/state: be consistent about copying slices\n\nValidSIKRoots documents that the caller should not modify the result.\nNone of the callers currently modify the result either,\nso stop making a copy of the outer slice.\n\nMoreover, the inner byte slices are not copied, so a caller could still\nget the first []byte and modify its contents. To be safe against that,\nwe would need to do a nested cloning of slices, which is too much.\n\nWhile here, I noticed that Vote.DeepCopy didn't actually make a copy\nof VoterID, which is of type []byte, so it does need copying too.","shortMessageHtmlLink":"vochain/state: be consistent about copying slices"}},{"before":"499d83aece2477ba21da28ce0059b39d9fc3b01c","after":null,"ref":"refs/heads/state-race","pushedAt":"2024-03-02T14:52:48.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}},{"before":null,"after":"499d83aece2477ba21da28ce0059b39d9fc3b01c","ref":"refs/heads/state-race","pushedAt":"2024-02-28T23:24:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"vochain/state: fix a data race in UpdateSIKRoots\n\nUpdateSIKRoots uses State.NoState with withTxLock=false,\nas it grabs the State.tx lock itself, so NoState grabbing the\nsame lock for reads and writes would cause deadlocks.\n\nHowever, UpdateSIKRoots only grabbed a read lock,\nand towards the end of its body it made a call to NoState.Set,\nwhich is a write operation that needs the write lock to be held.\n\nFirst, fix UpdateSIKRoots so it holds a write lock.\n\nSecond, tweak NoState so that it loudly complains as soon as it can\nif it spots that reads or writes are happening without the mutex\nbeing properly locked at the right level.\nNote that for writes we only do this on the first call to Set or Delete,\nas some NoState callers only ever call read-only methods like Get.\n\nHopefully these panic assertions will mean we catch future races\nmuch sooner; at least, without the UpdateSIKRoots fix,\nthe new assertions make multiple of our tests panic every time.\n\nFixes #1209.","shortMessageHtmlLink":"vochain/state: fix a data race in UpdateSIKRoots"}},{"before":"94792b0fbde08eb2a8e7e0f23735b4c72573d5d7","after":null,"ref":"refs/heads/staticcheck-new","pushedAt":"2024-02-28T22:38:07.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEs5ud6wA","startCursor":null,"endCursor":null}},"title":"Activity · mvdan/go-dvote"}