update alice.NotifyClaimed

This commit is contained in:
noot
2021-10-23 20:43:07 -04:00
parent e96fc4a6c5
commit 7036c4636f
5 changed files with 54 additions and 19 deletions

View File

@@ -119,9 +119,8 @@ func (a *alice) SetBobKeys(sk *monero.PublicKey, vk *monero.PrivateViewKey) {
}
func (a *alice) DeployAndLockETH(amount uint) (ethcommon.Address, error) {
pkAlice := a.pubkeys.SpendKey().Bytes()
pkBob := a.bobSpendKey.Bytes()
pkAlice := reverse(a.pubkeys.SpendKey().Bytes())
pkBob := reverse(a.bobSpendKey.Bytes())
var pka, pkb [32]byte
copy(pka[:], pkAlice)
@@ -209,19 +208,19 @@ func (a *alice) Refund() error {
From: a.auth.From,
Signer: a.auth.Signer,
}
secret := a.privkeys.Bytes()
secret := a.privkeys.SpendKeyBytes()
s := big.NewInt(0).SetBytes(secret)
_, err := a.contract.Refund(txOpts, s)
return err
}
func (a *alice) CreateMoneroWallet(kpB *monero.PrivateKeyPair) (monero.Address, error) {
func (a *alice) CreateMoneroWallet(kpAB *monero.PrivateKeyPair) (monero.Address, error) {
// got Bob's secret
skAB := monero.SumPrivateSpendKeys(kpB.SpendKey(), a.privkeys.SpendKey())
vkAB := monero.SumPrivateViewKeys(kpB.ViewKey(), a.privkeys.ViewKey())
kpAB := monero.NewPrivateKeyPair(skAB, vkAB)
// skAB := monero.SumPrivateSpendKeys(kpB.SpendKey(), a.privkeys.SpendKey())
// vkAB := monero.SumPrivateViewKeys(kpB.ViewKey(), a.privkeys.ViewKey())
// kpAB := monero.NewPrivateKeyPair(skAB, vkAB)
if err := a.client.GenerateFromKeys(kpAB, "alice-swap-wallet", ""); err != nil {
if err := a.client.GenerateFromKeys(kpAB, "alice-swap-wallet-0", ""); err != nil {
return "", err
}
@@ -249,6 +248,31 @@ func (a *alice) NotifyClaimed(txHash string) (monero.Address, error) {
return "", err
}
fmt.Println("got Bob's secret!", res[0].(*big.Int), hex.EncodeToString(res[0].(*big.Int).Bytes()))
return "", nil
fmt.Println("got Bob's secret!", hex.EncodeToString(res[0].(*big.Int).Bytes()))
// got Bob's secret
sbBytes := res[0].(*big.Int).Bytes()
var sb [32]byte
copy(sb[:], sbBytes)
skB, err := monero.NewPrivateSpendKey(sb[:])
if err != nil {
fmt.Printf("failed to convert Bob's secret into a key: %s\n", err)
return "", err
}
skAB := monero.SumPrivateSpendKeys(skB, a.privkeys.SpendKey())
kpAB, err := skAB.AsPrivateKeyPair()
if err != nil {
return "", err
}
return a.CreateMoneroWallet(kpAB)
}
func reverse(s []byte) []byte {
for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
s[i], s[j] = s[j], s[i]
}
return s
}

View File

@@ -256,8 +256,9 @@ func (b *bob) ClaimFunds() (string, error) {
From: b.auth.From,
Signer: b.auth.Signer,
}
// call swap.Swap.Claim() w/ b.privkeys.sk, revealing Bob's secret spend key
secret := b.privkeys.Bytes()
secret := b.privkeys.SpendKeyBytes()
s := big.NewInt(0).SetBytes(secret)
tx, err := b.contract.Claim(txOpts, s)
if err != nil {
@@ -274,6 +275,13 @@ func (b *bob) ClaimFunds() (string, error) {
//fmt.Println("tx logs: ", fmt.Sprintf("0x%x", receipt.Logs[0].Data))
fmt.Println("included in block number: ", receipt.Logs[0].BlockNumber)
fmt.Println("expected secret: ", fmt.Sprintf("0x%x", secret), s)
fmt.Println("secret: ", fmt.Sprintf("%x", secret))
return tx.Hash().String(), nil
}
func reverse(s []byte) []byte {
for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
s[i], s[j] = s[j], s[i]
}
return s
}

View File

@@ -111,7 +111,7 @@ func (n *node) handleMessageAlice(who peer.ID, msg net.Message, setupDone chan s
fmt.Printf("Bob claimed ether! got secret: %v", kp)
address, err := n.alice.CreateMoneroWallet(kp)
if err != nil {
fmt.Println("failed to create monero address: %w", err)
fmt.Println("failed to create monero address: %s", err)
return
}
@@ -147,10 +147,14 @@ func (n *node) handleMessageAlice(who peer.ID, msg net.Message, setupDone chan s
//close(setupDone)
case *net.NotifyClaimed:
_, err := n.alice.NotifyClaimed(msg.TxHash)
address, err := n.alice.NotifyClaimed(msg.TxHash)
if err != nil {
fmt.Println("failed to create monero address: %w", err)
fmt.Printf("failed to create monero address: %s\n", err)
return err
}
fmt.Printf("successfully created monero wallet from our secrets: address=%s", address)
// TODO: get and print balance
default:
return errors.New("unexpected message type")
}

View File

@@ -38,8 +38,7 @@ func (c *client) Transfer(to Address, accountIdx, amount uint) error {
}
func (c *client) GenerateFromKeys(kp *PrivateKeyPair, filename, password string) error {
address := kp.Address()
return c.callGenerateFromKeys(kp.sk, kp.vk, address, filename, password)
return c.callGenerateFromKeys(kp.sk, kp.vk, kp.Address(), filename, password)
}
func (c *client) GetAddress(idx uint) (*getAddressResponse, error) {

View File

@@ -113,7 +113,7 @@ func (kp *PrivateKeyPair) AddressBytes() []byte {
return addr
}
func (kp *PrivateKeyPair) Bytes() []byte {
func (kp *PrivateKeyPair) SpendKeyBytes() []byte {
return kp.sk.key.Bytes()
}