void queue_pkt_open(struct peer *peer, OpenChannel__AnchorOffer anchor) { OpenChannel *o = tal(peer, OpenChannel); /* Set up out commit info now: rest gets done in setup_first_commit * once anchor is established. */ peer->local.commit = new_commit_info(peer); peer->local.commit->revocation_hash = peer->local.next_revocation_hash; peer_get_revocation_hash(peer, 1, &peer->local.next_revocation_hash); open_channel__init(o); o->revocation_hash = sha256_to_proto(o, &peer->local.commit->revocation_hash); o->next_revocation_hash = sha256_to_proto(o, &peer->local.next_revocation_hash); o->commit_key = pubkey_to_proto(o, peer->dstate->secpctx, &peer->local.commitkey); o->final_key = pubkey_to_proto(o, peer->dstate->secpctx, &peer->local.finalkey); o->delay = tal(o, Locktime); locktime__init(o->delay); o->delay->locktime_case = LOCKTIME__LOCKTIME_BLOCKS; o->delay->blocks = rel_locktime_to_blocks(&peer->local.locktime); o->initial_fee_rate = peer->local.commit_fee_rate; if (anchor == OPEN_CHANNEL__ANCHOR_OFFER__WILL_CREATE_ANCHOR) assert(peer->local.offer_anchor == CMD_OPEN_WITH_ANCHOR); else { assert(anchor == OPEN_CHANNEL__ANCHOR_OFFER__WONT_CREATE_ANCHOR); assert(peer->local.offer_anchor == CMD_OPEN_WITHOUT_ANCHOR); } o->anch = anchor; o->min_depth = peer->local.mindepth; queue_pkt(peer, PKT__PKT_OPEN, o); }
} struct pkt *open_channel_pkt(const tal_t *ctx, const struct sha256 *revocation_hash, const struct pubkey *commit, const struct pubkey *final, u32 rel_locktime_seconds, OpenChannel__AnchorOffer offer_anchor, u32 min_depth, u64 commitment_fee) { OpenChannel o = OPEN_CHANNEL__INIT; Locktime lt = LOCKTIME__INIT; o.revocation_hash = sha256_to_proto(ctx, revocation_hash); o.commit_key = pubkey_to_proto(ctx, commit); o.final_key = pubkey_to_proto(ctx, final); lt.locktime_case = LOCKTIME__LOCKTIME_SECONDS; lt.seconds = rel_locktime_seconds; o.delay = < o.commitment_fee = commitment_fee; o.anch = offer_anchor; assert(o.anch == OPEN_CHANNEL__ANCHOR_OFFER__WILL_CREATE_ANCHOR || o.anch == OPEN_CHANNEL__ANCHOR_OFFER__WONT_CREATE_ANCHOR); o.min_depth = min_depth; { size_t len = open_channel__get_packed_size(&o); unsigned char *pb = malloc(len); open_channel__pack(&o, pb);