packages feed

web3-0.8.0.0: unit/Network/Ethereum/Web3/Test/LocalAccountSpec.hs

{-# LANGUAGE OverloadedStrings #-}

module Network.Ethereum.Web3.Test.LocalAccountSpec where

import           Crypto.Ethereum                     (SecKey)
import           Test.Hspec

import           Network.Ethereum.Account.PrivateKey (signTransaction)
import           Network.Ethereum.Api.Types          (Call (..), Quantity (..))

-- using same example as in this blog post:
-- https://medium.com/@codetractio/walkthrough-of-an-ethereum-improvement-proposal-eip-6fda3966d171
spec :: Spec
spec = describe "transaction signing" $ do
    let testCall = Call Nothing
                        (Just "0x3535353535353535353535353535353535353535")
                        (Just . Quantity $ 21000)
                        (Just . Quantity $ 20000000000)
                        (Just . Quantity $ 1000000000000000000)
                        Nothing
                        (Just 9)
        privKey = "4646464646464646464646464646464646464646464646464646464646464646" :: SecKey
        correctSignedTx = "0xf86c098504a817c800825208943535353535353535353535353535353535353535880de0b6b3a76400008025a028ef61340bd939bc2195fe537567866003e1a15d3c71ff63e1590620aa636276a067cbe9d8997f761aecb703304b3800ccf555c9f3dc64214b297fb1966a3b6d83"

    it "can create valid raw transaction" $
        signTransaction testCall 1 privKey `shouldBe` correctSignedTx