mirror of
https://github.com/muun/recovery.git
synced 2025-11-10 22:10:14 -05:00
Release v0.3.0
This commit is contained in:
53
vendor/github.com/muun/libwallet/submarineSwap.go
generated
vendored
53
vendor/github.com/muun/libwallet/submarineSwap.go
generated
vendored
@@ -1,11 +1,11 @@
|
||||
package libwallet
|
||||
|
||||
import (
|
||||
"github.com/go-errors/errors"
|
||||
"github.com/muun/libwallet/addresses"
|
||||
"github.com/muun/libwallet/swaps"
|
||||
)
|
||||
|
||||
type SubmarineSwap interface {
|
||||
SwapUuid() string
|
||||
Invoice() string
|
||||
Receiver() SubmarineSwapReceiver
|
||||
FundingOutput() SubmarineSwapFundingOutput
|
||||
@@ -39,13 +39,46 @@ type SubmarineSwapFundingOutput interface {
|
||||
}
|
||||
|
||||
func ValidateSubmarineSwap(rawInvoice string, userPublicKey *HDPublicKey, muunPublicKey *HDPublicKey, swap SubmarineSwap, originalExpirationInBlocks int64, network *Network) error {
|
||||
|
||||
switch AddressVersion(swap.FundingOutput().ScriptVersion()) {
|
||||
case addressSubmarineSwapV1:
|
||||
return ValidateSubmarineSwapV1(rawInvoice, userPublicKey, muunPublicKey, swap, network)
|
||||
case addressSubmarineSwapV2:
|
||||
return ValidateSubmarineSwapV2(rawInvoice, userPublicKey, muunPublicKey, swap, originalExpirationInBlocks, network)
|
||||
data := swaps.SubmarineSwap{
|
||||
Invoice: swap.Invoice(),
|
||||
Receiver: swaps.SubmarineSwapReceiver{
|
||||
Alias: swap.Receiver().Alias(),
|
||||
PublicKey: swap.Receiver().PublicKey(),
|
||||
},
|
||||
FundingOutput: createSwapFundingOutput(swap.FundingOutput()),
|
||||
PreimageInHex: swap.PreimageInHex(),
|
||||
}
|
||||
|
||||
return errors.Errorf("unknown swap version %v", swap.FundingOutput().ScriptVersion())
|
||||
return data.Validate(
|
||||
rawInvoice,
|
||||
&swaps.KeyDescriptor{Key: &userPublicKey.key, Path: userPublicKey.Path},
|
||||
&swaps.KeyDescriptor{Key: &muunPublicKey.key, Path: muunPublicKey.Path},
|
||||
originalExpirationInBlocks,
|
||||
network.network,
|
||||
)
|
||||
}
|
||||
|
||||
func createSwapFundingOutput(output SubmarineSwapFundingOutput) swaps.SubmarineSwapFundingOutput {
|
||||
out := swaps.SubmarineSwapFundingOutput{
|
||||
ScriptVersion: output.ScriptVersion(),
|
||||
OutputAddress: output.OutputAddress(),
|
||||
OutputAmount: output.OutputAmount(),
|
||||
ConfirmationsNeeded: output.ConfirmationsNeeded(),
|
||||
ServerPaymentHashInHex: output.ServerPaymentHashInHex(),
|
||||
ServerPublicKeyInHex: output.ServerPublicKeyInHex(),
|
||||
UserLockTime: output.UserLockTime(),
|
||||
}
|
||||
switch out.ScriptVersion {
|
||||
case AddressVersionSwapsV1:
|
||||
out.UserRefundAddress = addresses.New(
|
||||
output.UserRefundAddress().Version(),
|
||||
output.UserRefundAddress().DerivationPath(),
|
||||
output.UserRefundAddress().Address(),
|
||||
)
|
||||
case AddressVersionSwapsV2:
|
||||
out.ExpirationInBlocks = output.ExpirationInBlocks()
|
||||
out.UserPublicKey = &output.UserPublicKey().key
|
||||
out.MuunPublicKey = &output.MuunPublicKey().key
|
||||
out.KeyPath = output.UserPublicKey().Path
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user