예제 #1
0
 def test_loukupplan_amount(self):
     platon_ppos = Ppos('http://10.10.8.157:6789',
                        self.address,
                        chainid=102,
                        privatekey=conf.PRIVATE_KEY)
     # platon_ppos = self.ppos_link ()
     address1 = '0x51a9A03153a5c3c203F6D16233e3B7244844A457'
     privatekey1 = '25f9fdf3249bb47f239df0c59d23781c271e8b7e9a94e9e694c15717c1941502'
     # 签名转账
     platon_ppos.send_raw_transaction('',
                                      Web3.toChecksumAddress(conf.ADDRESS),
                                      Web3.toChecksumAddress(address1),
                                      self.gasPrice, self.gas, self.value,
                                      conf.PRIVATE_KEY)
     balance = platon_ppos.eth.getBalance(address1)
     if balance > 0:
         try:
             loukupbalace = Web3.toWei(10000, 'ether')
             plan = [{'Epoch': 1, 'Amount': loukupbalace}]
             result = platon_ppos.CreateRestrictingPlan(
                 address1,
                 plan,
                 privatekey1,
                 from_address=address1,
                 gasPrice=self.gasPrice,
                 gas=self.gas)
             assert result['status'] == 'false'
         except:
             status = 1
             assert status == 0, '创建锁仓计划失败'
     else:
         log.info('error:转账失败')
예제 #2
0
 def test_fee_income(self):
     platon_ppos = Ppos('http://10.10.8.157:6789',
                        self.address,
                        chainid=102,
                        privatekey=conf.PRIVATE_KEY)
     #platon_ppos = self.ppos_link ()
     incentive_pool_balance_befor = platon_ppos.eth.getBalance(
         conf.INCENTIVEPOOLADDRESS)
     log.info('交易前激励池查询余额:{}'.format(incentive_pool_balance_befor))
     # 签名转账
     address1 = '0x51a9A03153a5c3c203F6D16233e3B7244844A457'
     privatekey1 = '25f9fdf3249bb47f239df0c59d23781c271e8b7e9a94e9e694c15717c1941502'
     try:
         platon_ppos.send_raw_transaction(
             '', Web3.toChecksumAddress(conf.ADDRESS),
             Web3.toChecksumAddress(address1), self.gasPrice, self.gas,
             self.value, conf.PRIVATE_KEY)
         balance = platon_ppos.eth.getBalance(address1)
         if balance == Web3.toWei(self.value, 'ether'):
             incentive_pool_balance_after = platon_ppos.eth.getBalance(
                 conf.INCENTIVEPOOLADDRESS)
             log.info('交易前激励池查询余额:{}'.format(incentive_pool_balance_after))
             difference = incentive_pool_balance_after - incentive_pool_balance_befor
             log.info('手续费的金额:{}'.format(difference))
             assert difference == self.gas
         else:
             log.info("转账{}金额错误".format(Web3.toWei(self.value, 'ether')))
     except:
         status = 1
         assert status == 0, '转账失败'
예제 #3
0
    def test_loukupplan_abnormal(self, number, amount):
        '''
        创建锁仓计划时,参数有效性验证
        number : 锁仓解锁期
        amount : 锁仓金额
        :param number:
        :param amount:
        :return:
        '''
        address1 = '0x9148528b98a0065D185F01dbc59baB88CdbE7Ad2'
        private_key1 = '6ccbf153f7409af1e5df7a1ef77daaca4759f0a6b50ef73fe9ccd5738cc2fda1'
        platon_ppos = Ppos('http://10.10.8.157:6789',
                           self.address,
                           chainid=102,
                           privatekey=conf.PRIVATE_KEY)
        # platon_ppos = self.ppos_link ()
        try:
            loukupbalace = Web3.toWei(amount, 'ether')
            plan = [{'Epoch': number, 'Amount': loukupbalace}]
            #当锁仓金额输入小于 1ether
            if number >= 1 and amount < 1:
                result = platon_ppos.CreateRestrictingPlan(
                    address1,
                    plan,
                    conf.PRIVATE_KEY,
                    from_address=conf.ADDRESS,
                    gasPrice=self.gasPrice,
                    gas=self.gas)
                assert result['status'] == 'false'
            #当锁仓解锁期输入非正整数倍
            elif number < 0 or type(number) == float:
                result = platon_ppos.CreateRestrictingPlan(
                    address1,
                    plan,
                    conf.PRIVATE_KEY,
                    from_address=conf.ADDRESS,
                    gasPrice=self.gasPrice,
                    gas=self.gas)
                assert result['status'] == 'false'
            #当锁仓解锁期大于36个结算期
            elif number > 36:
                result = platon_ppos.CreateRestrictingPlan(
                    address1,
                    plan,
                    conf.PRIVATE_KEY,
                    from_address=conf.ADDRESS,
                    gasPrice=self.gasPrice,
                    gas=self.gas)
                assert result['status'] == 'false'

        except:
            status = 1
            assert status == 0, '创建锁仓计划失败'
예제 #4
0
 def test_loukupplan(self):
     from_address = Web3.toChecksumAddress(conf.ADDRESS)
     to_address = Web3.toChecksumAddress(
         self.ppos_link(self.rpc_list).web3.personal.newAccount(self.pwd))
     send_data = self.transfer_parameters(to_address, from_address)
     self.platon_ppos.eth.sendTransaction(send_data)
     toaddressbalace = self.platon_dpos1.eth.getBalance(to_address)
     loukupbalace = toaddressbalace / 4
     plan = [{
         'Epoch': 3,
         'Amount': loukupbalace
     }, {
         'Epoch': 3,
         'Amount': loukupbalace
     }]
     Ppos.CreateRestrictingPlan(to_address, plan, to_address)
     result = Ppos.GetRestrictingInfo(to_address, to_address)
예제 #5
0
 def test_punishment_income(self):
     '''
     验证低出块率验证节点的处罚金自动转账到激励池
     :return:
     '''
     #随机获取其中一个正在出块的节点信息
     node_info = get_node_list(conf.TWENTY_FIVENODE_YML)
     node_info_length = len(node_info) - 1
     index = random.randint(0, node_info_length)
     node_data = node_info[0][index]
     print(node_data)
     platon_ppos = Ppos('http://10.10.8.157:6789',
                        self.address,
                        chainid=102,
                        privatekey=conf.PRIVATE_KEY)
     # platon_ppos = self.ppos_link ()
     incentive_pool_balance_befor = platon_ppos.eth.getBalance(
         conf.INCENTIVEPOOLADDRESS)
     log.info('处罚之前激励池查询余额:{}'.format(incentive_pool_balance_befor))
     #停止其中一个正在出块的节点信息
     try:
         self.auto = AutoDeployPlaton(cbft=self.cbft_json_path)
         self.auto.kill(node_data)
         platon_ppos = self.ppos_link(node_data['url'])
         if not platon_ppos.web3.isConnected():
             platon_ppos = self.ppos_link()
             current_block = platon_ppos.eth.blockNumber()
             waiting_time = 250 - (current_block % 250)
             time.sleep(waiting_time + 1)
             incentive_pool_balance_after = platon_ppos.eth.getBalance(
                 conf.INCENTIVEPOOLADDRESS)
             log.info('处罚之后激励池查询余额:{}'.format(incentive_pool_balance_after))
             punishment_CandidateInfo = platon_ppos.getCandidateInfo(
                 node_data['id'])
             if punishment_CandidateInfo['Status'] == 'True':
                 punishment_amount = punishment_CandidateInfo['Data'][
                     'Shares'] * (20 / 100)
                 assert incentive_pool_balance_after == incentive_pool_balance_befor + punishment_amount
             else:
                 log.info("查询处罚节点:{}质押信息失败".format(node_data['host']))
         else:
             log.info("当前质押节点:{}链接正常".format(node_data['host']))
     except:
         status = 1
         assert status == 0, '停止节点:{}失败'.format(node_data['host'])
예제 #6
0
 def test_Incentive_pool(self):
     platon_ppos = Ppos('http://10.10.8.157:6789',
                        self.address,
                        chainid=102,
                        privatekey=conf.PRIVATE_KEY)
     #platon_ppos = self.ppos_link ()
     lockupbalance = platon_ppos.eth.getBalance(conf.INCENTIVEPOOLADDRESS)
     log.info('激励池查询余额:{}'.format(lockupbalance))
     INCENTIVEPOOL = self.initial_amount['INCENTIVEPOOL']
     assert lockupbalance == INCENTIVEPOOL
예제 #7
0
 def test_token_loukup(self):
     '''
     查询初始化链后基金会锁仓金额
     以及查询初始锁仓计划信息的有效性
     :return:
     '''
     #platon_ppos = self.ppos_link ()
     platon_ppos = Ppos('http://10.10.8.157:6789',
                        self.address,
                        chainid=102,
                        privatekey=conf.PRIVATE_KEY)
     lockupbalance = platon_ppos.eth.getBalance(
         conf.FOUNDATIONLOCKUPADDRESS)
     FOUNDATIONLOCKUP = self.initial_amount['FOUNDATIONLOCKUP']
     assert lockupbalance == FOUNDATIONLOCKUP
     result = platon_ppos.GetRestrictingInfo(conf.INCENTIVEPOOLADDRESS)
     print(result)
     if result['Status'] == 'True':
         assert result['Date']['balance'] == self.initial_amount[
             'FOUNDATIONLOCKUP']
     else:
         log.info("初始锁仓金额:{},锁仓计划信息查询结果有误".format(lockupbalance))
예제 #8
0
    def ppos_link(self,
                  url=None,
                  address=conf.ADDRESS,
                  privatekey=conf.PRIVATE_KEY):
        if url is None:
            node_info = get_node_info(conf.TWENTY_FIVENODE_YML)
            self.rpc_list, enode_list, nodeid_list, ip_list, port_list = node_info.get(
                'collusion')
            rpc_list_length = len(self.rpc_list) - 1
            index = random.randint(0, rpc_list_length)
            url = self.rpc_list[index]

        self.platon_ppos = Ppos(url,
                                address=address,
                                chainid=101,
                                privatekey=privatekey)
        return self.platon_ppos
예제 #9
0
    def test_loukupplan(self):
        '''
        验证正常锁仓功能
        参数输入:
        Epoch:1
        Amount:50 ether
        :return:
        '''
        platon_ppos = Ppos('http://10.10.8.157:6789',
                           self.address,
                           chainid=102,
                           privatekey=conf.PRIVATE_KEY)
        #platon_ppos = self.ppos_link ()
        address1 = '0x472599739f398c24ad8Cdc03476b20D6469eAf46'
        privatekey1 = '61279a4b654aef7c3065c0cf550cdce460682875c218de893544a4799b57cc41'
        #非签名转账
        # platon_ppos.web3.personal.unlockAccount(conf.ADDRESS, conf.PASSWORD, 2222)
        # self.ppos_sendTransaction(address1,conf.ADDRESS,self.gas,self.gasPrice,Web3.toWei(10000,'ether'))
        #签名转账
        platon_ppos.send_raw_transaction('',
                                         Web3.toChecksumAddress(conf.ADDRESS),
                                         Web3.toChecksumAddress(address1),
                                         self.gasPrice, self.gas, self.value,
                                         conf.PRIVATE_KEY)
        balance = platon_ppos.eth.getBalance(address1)
        log.info("发起锁仓账户的余额:{}", balance)
        if balance > 0:
            try:
                loukupbalace = Web3.toWei(50, 'ether')
                plan = [{'Epoch': 1, 'Amount': loukupbalace}]
                lockup_before = platon_ppos.eth.getBalance(
                    conf.FOUNDATIONLOCKUPADDRESS)
                #创建锁仓计划
                result = platon_ppos.CreateRestrictingPlan(
                    address1,
                    plan,
                    privatekey1,
                    from_address=address1,
                    gasPrice=self.gasPrice)
                lockup_after = platon_ppos.eth.getBalance(
                    conf.FOUNDATIONLOCKUPADDRESS)
                #查看锁仓计划明细
                RestrictingInfo = platon_ppos.GetRestrictingInfo(address1)
                if result['status'] == 'True':
                    assert RestrictingInfo['balance'] == loukupbalace
                else:
                    log.info("查询锁仓计划信息返回状态为:{}".format(result['status']))

                assert lockup_after == lockup_before + loukupbalace
            except:
                status = 1
                assert status == 0, '创建锁仓计划失败'
예제 #10
0
    def test_loukupplan_sameperiod(self, code):
        '''
        验证一个锁仓计划里有多个相同解锁期
        code =1 :同个account在一个锁仓计划里有相同解锁期
        code =2 :同个account在不同锁仓计划里有相同解锁期
        :return:
        '''
        platon_ppos = Ppos('http://10.10.8.157:6789',
                           self.address,
                           chainid=102,
                           privatekey=conf.PRIVATE_KEY)
        # platon_ppos = self.ppos_link ()
        address1 = '0x51a9A03153a5c3c203F6D16233e3B7244844A457'
        privatekey1 = '25f9fdf3249bb47f239df0c59d23781c271e8b7e9a94e9e694c15717c1941502'
        # 签名转账
        platon_ppos.send_raw_transaction('',
                                         Web3.toChecksumAddress(conf.ADDRESS),
                                         Web3.toChecksumAddress(address1),
                                         self.gasPrice, self.gas, 1000,
                                         conf.PRIVATE_KEY)
        balance = platon_ppos.eth.getBalance(address1)
        if balance > 0:
            try:
                period1 = 1
                period2 = 2
                loukupbalace = Web3.toWei(100, 'ether')
                if code == 1:
                    plan = [{
                        'Epoch': period1,
                        'Amount': loukupbalace
                    }, {
                        'Epoch': period1,
                        'Amount': loukupbalace
                    }]
                    result = platon_ppos.CreateRestrictingPlan(
                        address1,
                        plan,
                        privatekey1,
                        from_address=address1,
                        gasPrice=self.gasPrice,
                        gas=self.gas)
                    assert result['status'] == 'True'
                    RestrictingInfo = platon_ppos.GetRestrictingInfo(address1)
                    json_data = json.loads(RestrictingInfo['Data'])
                    assert json_data['Entry'][0]['amount'] == (loukupbalace +
                                                               loukupbalace)

                elif code == 2:
                    plan = [{
                        'Epoch': period1,
                        'Amount': loukupbalace
                    }, {
                        'Epoch': period2,
                        'Amount': loukupbalace
                    }]
                    result = platon_ppos.CreateRestrictingPlan(
                        address1,
                        plan,
                        privatekey1,
                        from_address=address1,
                        gasPrice=self.gasPrice,
                        gas=self.gas)
                    assert result['status'] == 'True'
                    loukupbalace2 = Web3.toWei(200, 'ether')
                    plan = [{
                        'Epoch': period1,
                        'Amount': loukupbalace2
                    }, {
                        'Epoch': period2,
                        'Amount': loukupbalace2
                    }]
                    result1 = platon_ppos.CreateRestrictingPlan(
                        address1,
                        plan,
                        privatekey1,
                        from_address=address1,
                        gasPrice=self.gasPrice,
                        gas=self.gas)
                    assert result1['status'] == 'True'
                    RestrictingInfo = platon_ppos.GetRestrictingInfo(address1)
                    json_data = json.loads(RestrictingInfo['Data'])
                    assert json_data['Entry'][0]['amount'] == (loukupbalace +
                                                               loukupbalace2)
                else:
                    log.info('输入的code:{}有误'.format(code))
            except:
                status = 1
                assert status == 0, '创建锁仓计划失败'
        else:
            log.info('error:转账失败')
예제 #11
0
    def test_loukupplan_Moredeadline(self, balace1, balace2):
        '''
        验证一个锁仓计划里有多个解锁期
        amount : 锁仓
        balace1 : 第一个锁仓期的锁仓金额
        balace2 : 第二个锁仓期的锁仓金额
        :return:
        '''
        platon_ppos = Ppos('http://10.10.8.157:6789',
                           self.address,
                           chainid=102,
                           privatekey=conf.PRIVATE_KEY)
        # platon_ppos = self.ppos_link ()
        address1 = '0x51a9A03153a5c3c203F6D16233e3B7244844A457'
        privatekey1 = '25f9fdf3249bb47f239df0c59d23781c271e8b7e9a94e9e694c15717c1941502'
        # 签名转账
        platon_ppos.send_raw_transaction('',
                                         Web3.toChecksumAddress(conf.ADDRESS),
                                         Web3.toChecksumAddress(address1),
                                         self.gasPrice, self.gas, self.value,
                                         conf.PRIVATE_KEY)
        balance = platon_ppos.eth.getBalance(address1)
        if balance > 0:
            try:
                loukupbalace1 = Web3.toWei(balace1, 'ether')
                loukupbalace2 = Web3.toWei(balace2, 'ether')
                if (loukupbalace1 + loukupbalace2) < self.value:
                    plan = [{
                        'Epoch': 1,
                        'Amount': loukupbalace1
                    }, {
                        'Epoch': 2,
                        'Amount': loukupbalace2
                    }]
                    result = platon_ppos.CreateRestrictingPlan(
                        address1,
                        plan,
                        privatekey1,
                        from_address=address1,
                        gasPrice=self.gasPrice,
                        gas=self.gas)
                    assert result['status'] == 'True'
                elif self.value <= (loukupbalace1 + loukupbalace2):
                    plan = [{
                        'Epoch': 1,
                        'Amount': loukupbalace1
                    }, {
                        'Epoch': 2,
                        'Amount': loukupbalace2
                    }]
                    result = platon_ppos.CreateRestrictingPlan(
                        address1,
                        plan,
                        privatekey1,
                        from_address=address1,
                        gasPrice=self.gasPrice,
                        gas=self.gas)
                    assert result['status'] == 'false'
                else:
                    log.info('锁仓输入的金额:{}出现异常'.format(
                        (loukupbalace1 + loukupbalace2)))

            except:
                status = 1
                assert status == 0, '创建锁仓计划失败'
        else:
            log.info('error:转账失败')