Exemple #1
0
    def test_keystore(self):
        account = Account.from_keystore("zxcvbnm,", path_join("crypto", "zilliqa_keystore.json"))
        assert account and account.address == "526a2719b5855ef7d396a62b912a0dfa08e6ae63"

        account = Account.from_keystore("1234", path_join("crypto", "zilliqa_keystore2.json"))
        assert account and account.address == "526a2719b5855ef7d396a62b912a0dfa08e6ae63"

        with pytest.raises(ValueError):
            account = Account.from_keystore("123", path_join("crypto", "zilliqa_keystore2.json"))
            assert account and account.address == "526a2719b5855ef7d396a62b912a0dfa08e6ae63"
Exemple #2
0
    def _test_transfer_qa(self):
        chain.set_active_chain(chain.TestNet)

        account = Account(address="b50c2404e699fd985f71b2c3f032059f13d6543b")
        print(account)
        print("Account1 balance", repr(account.get_balance()))

        account2 = Account.from_keystore(
            "zxcvbnm,", path_join("crypto", "zilliqa_keystore.json"))
        print(account2)
        balance = account2.get_balance()
        print("Account2 balance", repr(balance))
        assert balance > 0

        txn_info = account2.transfer(account.bech32_address, Qa(123456789))
        pprint(txn_info)

        txn_details = account2.wait_txn_confirm(txn_info["TranID"],
                                                timeout=240)
        pprint(txn_details)
        assert txn_details

        print("Account1 balance", repr(account.get_balance()))
        print("Account1 balance", repr(account.get_balance_qa()))

        account = Account(
            private_key=
            "d0b47febbef2bd0c4a4ee04aa20b60d61eb02635e8df5e7fd62409a2b1f5ddf8")
        txn_info = account.transfer(account2.checksum_address,
                                    Qa(123456789),
                                    confirm=True)
        pprint(txn_info)
Exemple #3
0
    def test_transfer_confirm(self):
        account = Account(address="b50c2404e699fd985f71b2c3f032059f13d6543b")
        print(account)
        balance1 = account.get_balance()
        print("Account1 balance", balance1)
        with pytest.raises(RuntimeError):
            account.transfer("to_addr", 1)

        account2 = Account.from_keystore("zxcvbnm,", path_join("crypto", "zilliqa_keystore.json"))
        print(account2)
        balance = account2.get_balance()
        print("Account2 balance", balance)
        assert balance > 0

        result = account2.transfer(account.checksum_address, Zil(10.3), confirm=True, timeout=300, sleep=20)
        print("Transfer Result", result)
        pprint(account2.last_params)
        pprint(account2.last_txn_info)
        pprint(account2.last_txn_details)

        balance2 = account.get_balance()
        print("Account1 balance", balance2)
        assert balance2 >= balance1 + 10.299

        account = Account(private_key="d0b47febbef2bd0c4a4ee04aa20b60d61eb02635e8df5e7fd62409a2b1f5ddf8")
        result = account.transfer(account2.bech32_address, 10.3, confirm=True, timeout=600, sleep=20)
        print("Transfer Result", result)
        pprint(account2.last_params)
        pprint(account2.last_txn_info)
        pprint(account2.last_txn_details)
Exemple #4
0
    def test_transfer(self):
        chain.set_active_chain(chain.TestNet)

        account = Account(address="b50c2404e699fd985f71b2c3f032059f13d6543b")
        print(account)
        balance1 = account.get_balance()
        print("Account1 balance", balance1)
        with pytest.raises(RuntimeError):
            account.transfer("to_addr", 1)

        account2 = Account.from_keystore("zxcvbnm,", path_join("crypto", "zilliqa_keystore.json"))
        print(account2)
        balance = account2.get_balance()
        print("Account2 balance", balance)
        assert balance > 0

        to_addr = account.address
        with pytest.raises(ValueError):
            account2.transfer(to_addr, 50000)

        txn_info = account2.transfer(to_addr, Zil(10.3))
        pprint(txn_info)

        txn_details = account2.wait_txn_confirm(txn_info["TranID"], timeout=120)
        pprint(txn_details)
        assert txn_details

        balance2 = account.get_balance()
        print("Account1 balance", balance2)
        assert balance2 >= balance1 + 10.3
Exemple #5
0
    def test_batch_transfer(self):
        chain.set_active_chain(chain.TestNet)

        account = Account.from_keystore("zxcvbnm,", path_join("crypto", "zilliqa_keystore.json"))
        print(account)
        balance = account.get_balance()
        print("Account balance", balance)
        assert balance > 0

        batch = []
        for i in range(10):
            batch.append(BatchTransfer(
                "b50c2404e699fd985f71b2c3f032059f13d6543b",
                Zil(i * 0.1))
            )
        pprint(batch)

        txn_infos = account.transfer_batch(batch)
        pprint(txn_infos)

        txn_details = account.wait_txn_confirm(txn_infos[0]["TranID"], timeout=120)
        pprint(txn_details)
        assert txn_details

        for txn_info in txn_infos:
            txn_details = account.wait_txn_confirm(txn_info["TranID"])
            pprint(txn_details)

        balance2 = account.get_balance()
        print("Account1 balance", balance2)
Exemple #6
0
    def test_batch_transfer(self):
        account = Account.from_keystore("zxcvbnm,", path_join("crypto", "zilliqa_keystore.json"))
        print(account)
        balance = account.get_balance()
        print("Account balance", balance)
        assert balance > 0

        to_account = Account(address="b50c2404e699fd985f71b2c3f032059f13d6543b")

        # check address format
        with pytest.raises(ValueError):
            account.transfer_batch([
                BatchTransfer(to_account.checksum_address, 0.001),
                BatchTransfer("wrong_address", 0.001)
            ])

        with pytest.raises(ValueError):
            account.transfer_batch([
                BatchTransfer(to_account.address, 0.001),
            ])

        with pytest.raises(ValueError):
            account.transfer_batch([
                BatchTransfer(to_account.address0x, 0.001),
            ])

        batch = []
        total_zils = 0
        for i in range(2):
            batch.append(BatchTransfer(to_account.checksum_address, Zil(i * 0.1)))
            total_zils += (i * 0.1)

            batch.append(BatchTransfer(to_account.bech32_address, Zil(i * 0.1)))
            total_zils += (i * 0.1)

        pprint(batch)

        txn_infos = account.transfer_batch(batch)
        pprint(txn_infos)

        for txn_info in txn_infos:
            if not txn_info:
                print("Failed to create txn")
            else:
                txn_details = account.wait_txn_confirm(txn_info["TranID"])
                pprint(txn_details)
                if txn_details and txn_details["receipt"]["success"]:
                    print("Txn success")
                else:
                    print("Txn failed")

        balance2 = account.get_balance()
        print("Account1 balance", balance2)

        account2 = Account(private_key="d0b47febbef2bd0c4a4ee04aa20b60d61eb02635e8df5e7fd62409a2b1f5ddf8")
        txn_info = account2.transfer(account.bech32_address, total_zils, confirm=True)
        pprint(txn_info)
Exemple #7
0
    def test_transfer(self):
        chain.set_active_chain(chain.TestNet)

        account = Account(address="b50c2404e699fd985f71b2c3f032059f13d6543b")
        print(account)
        balance1 = account.get_balance()
        print("Account1 balance", balance1)
        with pytest.raises(RuntimeError):
            account.transfer("to_addr", 1)

        account2 = Account.from_keystore(
            "zxcvbnm,", path_join("crypto", "zilliqa_keystore.json"))
        print(account2)
        balance = account2.get_balance()
        print("Account2 balance", balance)
        assert balance > 0

        # check address format
        with pytest.raises(ValueError):
            account2.transfer(account.address, Zil(10.3))

        with pytest.raises(ValueError):
            account2.transfer(account.address0x, Zil(10.3))

        # checksum address
        # check insufficient balance
        with pytest.raises(ValueError):
            account2.transfer(account.checksum_address, 50000)

        txn_info = account2.transfer(account.checksum_address, Zil(10.3))
        pprint(txn_info)

        txn_details = account2.wait_txn_confirm(txn_info["TranID"],
                                                timeout=240)
        pprint(txn_details)
        assert txn_details

        balance2 = account.get_balance()
        print("Account1 balance", balance2)
        assert balance2 >= balance1 + 10.299

        account = Account(
            private_key=
            "d0b47febbef2bd0c4a4ee04aa20b60d61eb02635e8df5e7fd62409a2b1f5ddf8")
        # bech32 address
        txn_info = account.transfer(account2.bech32_address,
                                    10.3,
                                    confirm=True)
        pprint(txn_info)
Exemple #8
0
    def test_balance(self):
        account = Account(address="b50c2404e699fd985f71b2c3f032059f13d6543b")

        balance = account.get_balance()
        print("balance", balance)
        assert balance > 0

        nonce = account.get_nonce()
        print("nonce", nonce)
        assert nonce >= 0

        account2 = Account(address="b50c2404e699fd985f71b2c3f032059f13d65432")
        balance = account2.get_balance()
        print("balance", balance)
        assert balance == 0

        account3 = Account.from_keystore("zxcvbnm,", path_join("crypto", "zilliqa_keystore.json"))
        balance = account3.get_balance()
        print("balance", balance)
        assert balance > 0
Exemple #9
0
    def test_batch_transfer(self):
        chain.set_active_chain(chain.TestNet)

        account = Account.from_keystore(
            "zxcvbnm,", path_join("crypto", "zilliqa_keystore.json"))
        print(account)
        balance = account.get_balance()
        print("Account balance", balance)
        assert balance > 0

        batch = []
        for i in range(10):
            batch.append(
                BatchTransfer("b50c2404e699fd985f71b2c3f032059f13d6543b",
                              Zil(i * 0.1)))
        pprint(batch)

        txn_infos = account.transfer_batch(batch)
        pprint(txn_infos)

        txn_details = account.wait_txn_confirm(txn_infos[0]["TranID"],
                                               timeout=120)
        pprint(txn_details)
        assert txn_details

        for txn_info in txn_infos:
            txn_details = account.wait_txn_confirm(txn_info["TranID"])
            pprint(txn_details)

        balance2 = account.get_balance()
        print("Account1 balance", balance2)

        account2 = Account(
            private_key=
            "d0b47febbef2bd0c4a4ee04aa20b60d61eb02635e8df5e7fd62409a2b1f5ddf8")
        txn_info = account2.transfer(account.address,
                                     sum([b.zils for b in batch]))
        pprint(txn_info)
Exemple #10
0
    def test_transfer_qa(self):
        chain.set_active_chain(chain.TestNet)

        account = Account(address="b50c2404e699fd985f71b2c3f032059f13d6543b")
        print(account)
        print("Account1 balance", repr(account.get_balance()))

        account2 = Account.from_keystore("zxcvbnm,", path_join("crypto", "zilliqa_keystore.json"))
        print(account2)
        balance = account2.get_balance()
        print("Account2 balance", repr(balance))
        assert balance > 0

        to_addr = account.address
        txn_info = account2.transfer(to_addr, Qa(123456789))
        pprint(txn_info)

        txn_details = account2.wait_txn_confirm(txn_info["TranID"], timeout=120)
        pprint(txn_details)
        assert txn_details

        print("Account1 balance", repr(account.get_balance()))
        print("Account1 balance", repr(account.get_balance_qa()))
Exemple #11
0
class TestContract:
    contracts = {
        "hello": "c341f2767efc6bbfbeba0c830b8433addd1885f8",
        "test": "9411679c08c025ccde8865b5ebe301b899c02bef",
    }

    account = Account.from_keystore("zxcvbnm,", path_join("crypto", "zilliqa_keystore.json"))

    init = [
        Contract.value_dict("_scilla_version", "Uint32", "0"),
        Contract.value_dict("owner", "ByStr20", account.address0x)
    ]

    def setup_method(self, method):
        print("set active chain to IsolatedServer")
        chain.set_active_chain(chain.IsolatedServer)

    def test_new_contract(self):
        print("Account balance1", self.account.get_balance())

        code = open(path_join("contracts", "HelloWorld.scilla")).read()

        contract = Contract.new_from_code(code)
        print(contract)

        with pytest.raises(ValueError, match=".+set account.+"):
            contract.deploy()

        contract.account = self.account
        contract.deploy(init_params=self.init, timeout=300, sleep=10, gas_price=1000000000)
        print(contract)
        print("Account balance2", self.account.get_balance())
        assert contract.status == Contract.Status.Deployed

    def test_from_address_hello(self):
        address = self.contracts["hello"]
        contract = Contract.load_from_address(address, load_state=True)
        print(contract)
        pprint(contract.get_state(get_code=True, get_init=False))
        print(contract.status)
        print(contract.code)
        pprint(contract.init)
        pprint(contract.state)

    def test_from_address_test(self):
        address = self.contracts["test"]
        contract = Contract.load_from_address(address, load_state=True)
        print(contract)
        pprint(contract.get_state(get_code=True, get_init=False))
        print(contract.status)
        print(contract.code)
        pprint(contract.init)
        pprint(contract.state)

    def test_get_contracts(self):
        owner_addr = self.account.address
        contracts = Contract.get_contracts(owner_addr)
        pprint(contracts)

        contracts2 = self.account.get_contracts()
        pprint(contracts2)

        assert contracts == contracts2

    def test_call(self):
        address = self.contracts["test"]
        contract = Contract.load_from_address(address)
        print(contract)
        contract.get_state(get_init=True, get_code=False)
        print(contract.status)
        pprint(contract.init)
        pprint(contract.state)

        contract.account = self.account
        resp = contract.call(gas_price=1000000000, method="getMessage", params=[])
        print(resp)
        pprint(contract.last_receipt)
        assert contract.last_receipt["success"]
        assert contract.last_receipt["event_logs"][0]["params"][0]["vname"] == "msg"
        assert contract.last_receipt["event_logs"][0]["params"][0]["value"] == "Test Message"

    def test_call_hello(self):
        address = self.contracts["hello"]
        contract = Contract.load_from_address(address)
        print(contract)
        print(contract.status)
        pprint(contract.state)

        contract.account = self.account
        resp = contract.call(gas_price=1000000000, method="contrAddr", params=[])
        print(resp)
        pprint(contract.last_receipt)
        assert contract.last_receipt["success"]
        assert contract.last_receipt["event_logs"][0]["params"][0]["vname"] == "addr"
        assert contract.last_receipt["event_logs"][0]["params"][0]["value"] == contract.address0x

        resp = contract.call(gas_price=1000000000, method="setHello", params=[Contract.value_dict("msg", "String", "hi contract.")])
        print(resp)
        pprint(contract.last_receipt)
        assert contract.last_receipt["success"]
        assert contract.last_receipt["event_logs"][0]["params"][0]["vname"] == "code"
        assert contract.last_receipt["event_logs"][0]["params"][0]["type"] == "Int32"
        assert contract.last_receipt["event_logs"][0]["params"][0]["value"] == "2"

        resp = contract.call(gas_price=1000000000, method="getHello", params=[])
        print(resp)
        pprint(contract.last_receipt)
        assert contract.last_receipt["success"]
        assert contract.last_receipt["event_logs"][0]["_eventname"] == "getHello()"
        assert contract.last_receipt["event_logs"][0]["params"][0]["vname"] == "msg"
        assert contract.last_receipt["event_logs"][0]["params"][0]["type"] == "String"
        assert contract.last_receipt["event_logs"][0]["params"][0]["value"] == "hi contract."

    def test_call_other_account(self):
        address = self.contracts["hello"]
        contract = Contract.load_from_address(address)
        print(contract)
        print(contract.status)

        account2 = Account(private_key="d0b47febbef2bd0c4a4ee04aa20b60d61eb02635e8df5e7fd62409a2b1f5ddf8")
        print("Account2 balance", account2.get_balance())

        contract.account = account2
        resp = contract.call(gas_price=1000000000, method="setHello", params=[
            Contract.value_dict("msg", "String", "hello from another account")
        ])
        print(resp)
        pprint(contract.last_receipt)
        assert contract.last_receipt["success"]
        assert contract.last_receipt["event_logs"][0]["params"][0]["vname"] == "code"
        assert contract.last_receipt["event_logs"][0]["params"][0]["value"] == "1"

        resp = contract.call(gas_price=1000000000, method="getHello", params=[])
        print(resp)
        pprint(contract.last_receipt)
        assert contract.last_receipt["success"]
        assert contract.last_receipt["event_logs"][0]["_eventname"] == "getHello()"
        assert contract.last_receipt["event_logs"][0]["params"][0]["vname"] == "msg"
        assert contract.last_receipt["event_logs"][0]["params"][0]["type"] == "String"
        assert contract.last_receipt["event_logs"][0]["params"][0]["value"] == "hi contract."
Exemple #12
0
class TestAccount:
    chain.set_active_chain(chain.TestNet)

    account = Account.from_keystore("zxcvbnm,", path_join("crypto", "zilliqa_keystore.json"))

    def test_new_contract(self):
        print("Account balance", self.account.get_balance())

        code = open(path_join("contracts", "HelloWorld.scilla")).read()

        contract = Contract.new_from_code(code)
        print(contract)

        with pytest.raises(ValueError, match=".+set account.+"):
            contract.deploy()

        contract.account = self.account
        contract.deploy(timeout=300, sleep=10)
        print(contract)
        assert contract.status == Contract.Status.Deployed

    def test_from_address_hello(self):
        address = "45dca9586598c8af78b191eaa28daf2b0a0b4f43"
        contract = Contract.load_from_address(address, load_state=True)
        print(contract)
        pprint(contract.get_state(get_code=True, get_init=True))
        print(contract.status)
        print(contract.code)
        pprint(contract.init)
        pprint(contract.state)

    def test_from_address_test(self):
        address = "2d3195fbfbe0442556c9613e539a0b62a64f2402"
        contract = Contract.load_from_address(address, load_state=True)
        print(contract)
        pprint(contract.get_state(get_code=True, get_init=True))
        print(contract.status)
        print(contract.code)
        pprint(contract.init)
        pprint(contract.state)

    def test_get_contracts(self):
        owner_addr = self.account.address
        contracts = Contract.get_contracts(owner_addr)
        pprint(contracts)

        contracts2 = self.account.get_contracts()
        pprint(contracts2)

        assert contracts == contracts2

    def test_call(self):
        contract = Contract.load_from_address("2d3195fbfbe0442556c9613e539a0b62a64f2402")
        print(contract)
        contract.get_state(get_init=True, get_code=True)
        print(contract.status)
        print(contract.code)
        pprint(contract.init)
        pprint(contract.state)

        contract.account = self.account

        resp = contract.call(method="getMessage", params=[])
        print(resp)
        pprint(contract.last_receipt)
        assert contract.last_receipt["success"]
        assert contract.last_receipt["event_logs"][0]["params"][0]["vname"] == "msg"
        assert contract.last_receipt["event_logs"][0]["params"][0]["value"] == "Test Message"

    def test_call_hello(self):
        contract = Contract.load_from_address("45dca9586598c8af78b191eaa28daf2b0a0b4f43")
        print(contract)
        print(contract.status)
        print(contract.code)
        pprint(contract.init)
        pprint(contract.state)

        contract.account = self.account

        resp = contract.call(method="contrAddr", params=[])
        print(resp)
        pprint(contract.last_receipt)
        assert contract.last_receipt["success"]
        assert contract.last_receipt["event_logs"][0]["params"][0]["vname"] == "addr"
        assert contract.last_receipt["event_logs"][0]["params"][0]["value"] == contract.address0x

        resp = contract.call(method="setHello", params=[Contract.value_dict("msg", "String", "hi contract.")])
        print(resp)
        pprint(contract.last_receipt)
        assert contract.last_receipt["success"]
        assert contract.last_receipt["event_logs"][0]["params"][0]["vname"] == "code"
        assert contract.last_receipt["event_logs"][0]["params"][0]["type"] == "Int32"
        assert contract.last_receipt["event_logs"][0]["params"][0]["value"] == "2"

        resp = contract.call(method="getHello", params=[])
        print(resp)
        pprint(contract.last_receipt)
        assert contract.last_receipt["success"]
        assert contract.last_receipt["event_logs"][0]["_eventname"] == "getHello()"
        assert contract.last_receipt["event_logs"][0]["params"][0]["vname"] == "msg"
        assert contract.last_receipt["event_logs"][0]["params"][0]["type"] == "String"
        assert contract.last_receipt["event_logs"][0]["params"][0]["value"] == "hi contract."

    def test_call_other_account(self):
        contract = Contract.load_from_address("45dca9586598c8af78b191eaa28daf2b0a0b4f43")
        print(contract)
        print(contract.status)
        print(contract.code)
        pprint(contract.init)
        pprint(contract.state)

        account2 = Account(private_key="d0b47febbef2bd0c4a4ee04aa20b60d61eb02635e8df5e7fd62409a2b1f5ddf8")
        print("Account2 balance", account2.get_balance())

        contract.account = account2

        resp = contract.call(method="setHello", params=[
            Contract.value_dict("msg", "String", "hello from another account")
        ])
        print(resp)
        pprint(contract.last_receipt)
        assert contract.last_receipt["success"]
        assert contract.last_receipt["event_logs"][0]["params"][0]["vname"] == "code"
        assert contract.last_receipt["event_logs"][0]["params"][0]["value"] == "1"

        resp = contract.call(method="getHello", params=[])
        print(resp)
        pprint(contract.last_receipt)
        assert contract.last_receipt["success"]
        assert contract.last_receipt["event_logs"][0]["_eventname"] == "getHello()"
        assert contract.last_receipt["event_logs"][0]["params"][0]["vname"] == "msg"
        assert contract.last_receipt["event_logs"][0]["params"][0]["type"] == "String"
        assert contract.last_receipt["event_logs"][0]["params"][0]["value"] == "hi contract."