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

Function wallet_shachain_load

wallet/wallet.c:776–813  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

774}
775
776static bool wallet_shachain_load(struct wallet *wallet, u64 id,
777 struct wallet_shachain *chain)
778{
779 struct db_stmt *stmt;
780 chain->id = id;
781 shachain_init(&chain->chain);
782
783 /* Load shachain metadata */
784 stmt = db_prepare_v2(
785 wallet->db,
786 SQL("SELECT min_index, num_valid FROM shachains WHERE id=?"));
787 db_bind_u64(stmt, 0, id);
788 db_query_prepared(stmt);
789
790 if (!db_step(stmt)) {
791 tal_free(stmt);
792 return false;
793 }
794
795 chain->chain.min_index = db_col_u64(stmt, "min_index");
796 chain->chain.num_valid = db_col_u64(stmt, "num_valid");
797 tal_free(stmt);
798
799 /* Load shachain known entries */
800 stmt = db_prepare_v2(wallet->db,
801 SQL("SELECT idx, hash, pos FROM shachain_known "
802 "WHERE shachain_id=?"));
803 db_bind_u64(stmt, 0, id);
804 db_query_prepared(stmt);
805
806 while (db_step(stmt)) {
807 int pos = db_col_int(stmt, "pos");
808 chain->chain.known[pos].index = db_col_u64(stmt, "idx");
809 db_col_sha256(stmt, "hash", &chain->chain.known[pos].hash);
810 }
811 tal_free(stmt);
812 return true;
813}
814
815static struct peer *wallet_peer_load(struct wallet *w, const u64 dbid)
816{

Callers 2

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