-func FederationProgrom(c *Config) []byte {
- pubKeys := chainkd.XPubKeys(c.Federation.Xpubs)
- fedpegScript, err := vmutil.P2SPMultiSigProgram(pubKeys, c.Federation.Quorum)
+// FedAddressPath is used to derive federation root xpubs for signing cross-chain txs
+var FedAddressPath = [][]byte{
+ []byte{0x2C, 0x00, 0x00, 0x00},
+ []byte{0x99, 0x00, 0x00, 0x00},
+ []byte{0x01, 0x00, 0x00, 0x00},
+ []byte{0x00, 0x00, 0x00, 0x00},
+ []byte{0x01, 0x00, 0x00, 0x00},
+}
+
+func FederationPMultiSigScript(c *Config) []byte {
+ xpubs := c.Federation.Xpubs
+ derivedXPubs := chainkd.DeriveXPubs(xpubs, FedAddressPath)
+ program, err := vmutil.P2SPMultiSigProgram(chainkd.XPubKeys(derivedXPubs), c.Federation.Quorum)