Пример #1
0
 def start_vote_for_call(address, calldata):
     return create_vote(voting=Helpers.dao_voting,
                        token_manager=Helpers.dao_token_manager,
                        vote_desc=f'Test',
                        evm_script=encode_call_script([(address, calldata)
                                                       ]),
                        tx_params={'from': Helpers.ldo_holder})
Пример #2
0
Файл: dao.py Проект: rigidus/et
def create_vote(voting, token_manager, vote_desc, evm_script, tx_params):
    new_vote_script = encode_call_script([
        (voting.address,
         voting.newVote.encode_input(
             evm_script if evm_script is not None else EMPTY_CALLSCRIPT,
             vote_desc, False, False))
    ])
    tx = token_manager.forward(new_vote_script, tx_params)
    vote_id = tx.events['StartVote']['voteId']
    return (vote_id, tx)
def main():
    insurance_purchaser = InsurancePurchaser.at("0x2Ca788280fB10384946D3ECC838D94DeCa505CF4")
    voting = interface.Voting(lido_dao_voting_address)
    token_manager = interface.TokenManager(lido_dao_token_manager_address)
    finance = interface.Finance(lido_dao_finance_address)

    ldo_amount = Wei('50000 ether')
    steth_amount = Wei('16 ether')
    insurance_amount = Wei('56.25 ether')
    min_insurance_tokens = Wei('70 ether')
    reference = "Purchase for slashing insurance"

    purchase_script = encode_call_script([
        (
            finance.address,
            finance.newImmediatePayment.encode_input(
                ldo_token_address,
                insurance_purchaser.address,
                ldo_amount,
                reference
            )
        ),
        (
            finance.address,
            finance.newImmediatePayment.encode_input(
                steth_token_address,
                insurance_purchaser.address,
                steth_amount,
                reference
            )
        ),
        (
            insurance_purchaser.address,
            insurance_purchaser.purchase.encode_input(
                insurance_amount,
                min_insurance_tokens
            )
        )
    ])

    print(purchase_script)
Пример #4
0
Файл: dao.py Проект: rigidus/et
def propose_vesting_manager_contract(manager_address, total_ldo_amount,
                                     ldo_transfer_reference, acl, voting,
                                     finance, token_manager, tx_params):
    evm_script = encode_call_script([
        encode_token_transfer(token_address=ldo_token_address,
                              recipient=manager_address,
                              amount=total_ldo_amount,
                              reference=ldo_transfer_reference,
                              finance=finance),
        encode_permission_grant(target_app=token_manager,
                                permission_name='ASSIGN_ROLE',
                                to=manager_address,
                                acl=acl)
    ])
    return create_vote(
        voting=voting,
        token_manager=token_manager,
        vote_desc=
        f'Make {manager_address} a vesting manager for total {total_ldo_amount} LDO',
        evm_script=evm_script,
        tx_params=tx_params)
def propose_insurance_purchase(insurance_purchaser, ldo_amount, steth_amount,
                               insurance_amount, min_insurance_tokens,
                               reference, tx_params):
    voting = interface.Voting(lido_dao_voting_address)
    token_manager = interface.TokenManager(lido_dao_token_manager_address)
    finance = interface.Finance(lido_dao_finance_address)

    commands = []

    if ldo_amount > 0:
        commands.append((finance.address,
                         finance.newImmediatePayment.encode_input(
                             ldo_token_address, insurance_purchaser.address,
                             ldo_amount, reference)))

    if steth_amount > 0:
        commands.append((finance.address,
                         finance.newImmediatePayment.encode_input(
                             steth_token_address, insurance_purchaser.address,
                             steth_amount, reference)))

    commands.append(
        (insurance_purchaser.address,
         insurance_purchaser.purchase.encode_input(insurance_amount,
                                                   min_insurance_tokens)))

    print('commands for the voting:', commands)

    payment_script = encode_call_script(commands)

    return create_vote(
        voting=voting,
        token_manager=token_manager,
        vote_desc=
        f'Send {ldo_amount} tokens at {ldo_token_address} to {insurance_purchaser.address}: {reference}',
        evm_script=payment_script,
        tx_params=tx_params)