From 1f8a4cbd2b723f8814c7dd5297af493c0dcfadf7 Mon Sep 17 00:00:00 2001 From: "Rene V. Vergara" Date: Tue, 9 Apr 2024 20:23:16 -0400 Subject: [PATCH] Branch rvv040 - Get Sapling Human Readable representation - In proccess Bug - Bech32m error calculating checksum - to resolve --- src/ZcashHaskell/Orchard.hs | 18 ++++++++++++++++++ src/ZcashHaskell/Utils.hs | 1 + test/Spec.hs | 6 ++++++ 3 files changed, 25 insertions(+) diff --git a/src/ZcashHaskell/Orchard.hs b/src/ZcashHaskell/Orchard.hs index a810114..0295a30 100644 --- a/src/ZcashHaskell/Orchard.hs +++ b/src/ZcashHaskell/Orchard.hs @@ -153,3 +153,21 @@ decryptOrchardAction key encAction = decodedAction = withPureBorshVarBuffer $ rustWrapperOrchardNoteDecode (o_key key) encAction + +chrToByteString :: [Char] -> C.ByteString +chrToByteString = C.pack + +getSaplingFromUA :: BS.ByteString -> T.Text +getSaplingFromUA uadd = do + let a = isValidUnifiedAddress uadd + case a of + Nothing -> "xxx" + Just a -> do + let sraw = s_rec a + case sraw of + Nothing -> "xxx" + Just sraw -> do + let net = ua_net a + case net of + MainNet -> encodeBech32m (chrToByteString sapPaymentAddressHrp) ( getBytes sraw ) + TestNet -> encodeBech32m (chrToByteString sapTestPaymentAddressHrp) ( getBytes sraw ) \ No newline at end of file diff --git a/src/ZcashHaskell/Utils.hs b/src/ZcashHaskell/Utils.hs index b6598da..b858c7c 100644 --- a/src/ZcashHaskell/Utils.hs +++ b/src/ZcashHaskell/Utils.hs @@ -115,3 +115,4 @@ readZebraTransaction hex = else Just rawTx where rawTx = (withPureBorshVarBuffer . rustWrapperTxRead) $ hexBytes hex + diff --git a/test/Spec.hs b/test/Spec.hs index 6db774b..fab4ccb 100644 --- a/test/Spec.hs +++ b/test/Spec.hs @@ -844,6 +844,12 @@ main = do let tb = zt_tBundle t' print tb show tb `shouldNotBe` "" + describe "Extract Sapling Address" $ do + let sr = getSaplingFromUA "u1y3224rl7f5tz262apkmj33z6pe5rn3z4y6pqtces45valg9qsvuer688crr8xvvqq4u7umhrvt0qaj5jv05ec7jd66qedq97dvrhhzryq69lrm8mc25ql0zt6yk2yks9zyp0qv7tgtfqw5zgl7q3p660v37f0ra5aj2g8y75mrzkgrgr8fl5cmur07tcqcrvzf96t4ennh45vnxemp8" + it "Extract sapling address" $ do + print sr + sr `shouldBe` "zs1algtrzkczkl5708yaw2sr58jkutm8wcx2tj0a9ex3ns8nu8l3wtlusemfcpllnfmhyhw7vk9m0h" + -- | Properties prop_PhraseLength :: Property