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})
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)
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)