MCPcopy Create free account
hub / github.com/ElementsProject/lightning / wallet_shachain_load

Function wallet_shachain_load

wallet/wallet.c:1237–1274  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1235}
1236
1237static bool wallet_shachain_load(struct wallet *wallet, u64 id,
1238 struct wallet_shachain *chain)
1239{
1240 struct db_stmt *stmt;
1241 chain->id = id;
1242 shachain_init(&chain->chain);
1243
1244 /* Load shachain metadata */
1245 stmt = db_prepare_v2(
1246 wallet->db,
1247 SQL("SELECT min_index, num_valid FROM shachains WHERE id=?"));
1248 db_bind_u64(stmt, id);
1249 db_query_prepared(stmt);
1250
1251 if (!db_step(stmt)) {
1252 tal_free(stmt);
1253 return false;
1254 }
1255
1256 chain->chain.min_index = db_col_u64(stmt, "min_index");
1257 chain->chain.num_valid = db_col_u64(stmt, "num_valid");
1258 tal_free(stmt);
1259
1260 /* Load shachain known entries */
1261 stmt = db_prepare_v2(wallet->db,
1262 SQL("SELECT idx, hash, pos FROM shachain_known "
1263 "WHERE shachain_id=?"));
1264 db_bind_u64(stmt, id);
1265 db_query_prepared(stmt);
1266
1267 while (db_step(stmt)) {
1268 int pos = db_col_int(stmt, "pos");
1269 chain->chain.known[pos].index = db_col_u64(stmt, "idx");
1270 db_col_sha256(stmt, "hash", &chain->chain.known[pos].hash);
1271 }
1272 tal_free(stmt);
1273 return true;
1274}
1275
1276static struct peer *wallet_peer_load(struct wallet *w, const u64 dbid)
1277{

Callers 3

wallet_stmt2channelFunction · 0.85
test_shachain_crudFunction · 0.85

Calls 8

shachain_initFunction · 0.85
db_bind_u64Function · 0.85
db_query_preparedFunction · 0.85
db_stepFunction · 0.85
tal_freeFunction · 0.85
db_col_u64Function · 0.85
db_col_intFunction · 0.85
db_col_sha256Function · 0.85

Tested by 1

test_shachain_crudFunction · 0.68