Transaction #16471

Hash 7386010352176960b465f5c2dfbc733ac9c788fc2d4b7ec918daa99b80193f65
Status Success
Timestamp 447 days ago - 4/24/2023, 10:17:34 PM UTC+0
Block 16471
Stamps Used 768
Burned Fee 0.04544379 TAU
From 42a13c664781a24ab4aca978abb685d9c07ef9ae64a2af865a043e3186a66907 
Contract Name submission
Function Name submit_contract

Additional Info
Nonce 35
Processor a04b5891ef8cd27095373a4f75b899ec2bc0883c02e506a6a5b55b491998cc3f
Signature 9e452fc4af6b9b546e7a94aa2a8473437a4a8442f7d6c506ccc9f0b05b629eaabdd1df8de6bf9ebd3506cea90b63fbc8684e236b79cafab7a43130b41a2ed306
Stamps Supplied 845
Stamps per TAU 169

Kwargs

code Proposals = Hash(default_value = None) Ballots = Hash(default_value = False) BallotCount = Hash(default_value = 0) ProcessedBallots = Hash(default_value = 0) ProposalCount = Variable() VerifiedBallots = Hash(default_value = 0) LPWeight = Hash(default_value = 0) metadata = Hash(default_value = None) I = importlib @construct def seed(): metadata['operator'] = ctx.caller metadata['fee_currency'] = 'con_rswp_lst001' metadata['fee_amount'] = 10 # 27272 $30 3/7/22 metadata['token_contract'] = 'con_rswp_lst001' metadata['v_token_contracts'] = ['con_staking_rswp_rswp_interop_v2'] metadata['lp_v_token_contracts'] = ['con_liq_mining_rswp_rswp'] metadata['dex_contract'] = 'con_rocketswap_official_v1_1' metadata['max_description_length'] = 50 metadata['max_choices_number'] = 4 metadata['max_title_length'] = 20 ProposalCount.set(0) @export def create_proposal(title:str, description: str, date_decision: datetime.datetime, choices: list): assert len(title) > 4 and len(title) <= metadata['max_title_length'], f"Title must be more than 4 characters long and at most {metadata['max_title_length']} long." assert len(description) > 10 and len(description) <= metadata['max_description_length'], f"Description length must be more than 10 characters long and at most {metadata['max_description_length']} long" assert date_decision > now, 'the decision date must take place in the future.' assert len(choices) > 1 and len(choices) <= metadata['max_choices_number'] , f"you must specify at least 2 choices and at most {metadata['max_choices_number']} choices" for choice in choices: assert len(choice) > 0, 'choice cannot be an empty string.' deduct_fee() ProposalCount.set(ProposalCount.get() + 1) Proposals[ProposalCount.get()] = { "title":title, "description": description, "date_decision": date_decision, "choices": choices, "state": "open" } proposal_idx = ProposalCount.get() token_contract_name = metadata['token_contract'] if LPWeight[proposal_idx,token_contract_name] is 0: set_lp_token_value(proposal_idx=proposal_idx, token_contract_name=token_contract_name) def deduct_fee(): token_contract = I.import_module(metadata['fee_currency']) token_contract.transfer_from(amount=metadata['fee_amount'], to=metadata['operator'], main_account=ctx.signer) @export def count_ballots(proposal_idx: int, batch_size: int = None): if batch_size is None: batch_size=100 '''checks''' assert now > Proposals[proposal_idx]["date_decision"], 'It is not possible to count the ballots for this proposal yet' assert Proposals[proposal_idx]["state"] is not "concluded", 'The ballots for this proposal have already been counted' assert Ballots[proposal_idx, "counted"] is not True, 'this ballot has been counted.' '''check if this proposal has a stored lp token weight, if no, calculate how much the LP weight is worth''' start_idx = 0 if ProcessedBallots[proposal_idx] == None or ProcessedBallots[proposal_idx] == 0: ProcessedBallots[proposal_idx] = 0 start_idx += 1 else: start_idx = ProcessedBallots[proposal_idx] start_idx += 1 current_ballot_idx = 0 '''count the ballots''' for i in range(0, batch_size): current_ballot_idx = start_idx + i voter_vk = Ballots[proposal_idx,"forwards_index", current_ballot_idx,"user_vk"] ProcessedBallots[proposal_idx, current_ballot_idx, "choice"] = Ballots[proposal_idx,"forwards_index", current_ballot_idx, "choice"] ProcessedBallots[proposal_idx, current_ballot_idx, "user_vk"] = voter_vk ProcessedBallots[proposal_idx, current_ballot_idx, "weight"] = get_vk_weight(vk=voter_vk, proposal_idx=proposal_idx) if current_ballot_idx == BallotCount[proposal_idx]: # Mark ballot count as ready for verification. Ballots[proposal_idx, "counted"] = True # Store ballot count of processed ballots ProcessedBallots[proposal_idx] = current_ballot_idx return ProcessedBallots[proposal_idx] = current_ballot_idx @export def verify_ballots(proposal_idx: int, batch_size: int = None): if batch_size is None: batch_size=100 '''checks''' assert Ballots[proposal_idx, "counted"] is True, 'ballots must be counted before verifying them' assert Ballots[proposal_idx, "verified"] is not True, 'the ballots for this proposal have already been verified' assert Proposals[proposal_idx]["state"] is not "concluded", 'this proposal has been concluded' start_idx = 0 if VerifiedBallots[proposal_idx] == None or VerifiedBallots[proposal_idx] == 0: VerifiedBallots[proposal_idx] = 0 start_idx += 1 else: start_idx = VerifiedBallots[proposal_idx] start_idx += 1 current_ballot_idx = 0 for i in range(0, batch_size): current_ballot_idx = start_idx + 1 + i voter_vk = ProcessedBallots[proposal_idx, current_ballot_idx, "user_vk"] choice = ProcessedBallots[proposal_idx, current_ballot_idx, "choice"] processed_weight = ProcessedBallots[proposal_idx, current_ballot_idx, "weight"] current_weight = get_vk_weight(vk=voter_vk, proposal_idx=proposal_idx) if current_weight >= processed_weight - (processed_weight * 0.05): VerifiedBallots[proposal_idx, choice] += current_weight if current_ballot_idx == BallotCount[proposal_idx]: choices_len = len(Proposals[proposal_idx]["choices"]) Ballots[proposal_idx, "verified"] = True Proposals[proposal_idx]["state"] = "concluded" Proposals[proposal_idx]["results"] = {} Proposals[proposal_idx] = Proposals[proposal_idx] for c in range(0, choices_len): Proposals[proposal_idx]["results"][str(c)] = VerifiedBallots[proposal_idx, c] Proposals[proposal_idx] = Proposals[proposal_idx] VerifiedBallots[proposal_idx] = current_ballot_idx return VerifiedBallots[proposal_idx] = current_ballot_idx @export def cast_ballot(proposal_idx: int, choice_idx: int): voter = ctx.signer ballot_idx = BallotCount[proposal_idx] ballot_idx += 1 '''checks''' assert Proposals[proposal_idx] is not False assert choice_idx >= 0 and choice_idx < len(Proposals[proposal_idx]["choices"]), 'you must select a valid choice.' assert now < Proposals[proposal_idx]["date_decision"], 'It is too late to cast a ballot for this proposal.' assert Ballots[proposal_idx,"backwards_index", voter] is False, 'you have already cast a ballot !' '''record ballot''' Ballots[proposal_idx,"forwards_index",ballot_idx,"choice"] = choice_idx Ballots[proposal_idx,"forwards_index",ballot_idx,"user_vk"] = voter Ballots[proposal_idx,"backwards_index", voter] = ballot_idx BallotCount[proposal_idx] += 1 @export def get_vk_weight(vk:str, proposal_idx: int): ''' Get the rswp value of any tokens, vtokens and LP tokens for rswp pairs (staked or not). ''' token_contract_name = metadata['token_contract'] user_token_total = 0 user_token_total += get_token_value(vk=vk, token_contract_name=token_contract_name) user_token_total += get_staked_token_value(vk=vk) user_token_total += get_rocketfuel_value(vk=vk, token_contract_name=token_contract_name) user_token_total += get_lp_value(vk=vk, proposal_idx=proposal_idx, token_contract_name=token_contract_name) user_token_total += get_staked_lp_value(vk=vk, proposal_idx=proposal_idx, token_contract_name=token_contract_name) return user_token_total @export def get_token_value(vk:str, token_contract_name:str): balances = ForeignHash(foreign_contract=token_contract_name, foreign_name='balances') token_balance = balances[vk] return token_balance @export def get_staked_token_value(vk: str): '''iterate through v token contracts and get user balance.''' vk_balance = 0 staking_contract_names = metadata['v_token_contracts'] for contract in staking_contract_names: balances = ForeignHash(foreign_contract=contract, foreign_name='balances') vk_balance += balances[vk] return vk_balance @export def get_rocketfuel_value(vk:str, token_contract_name: str): ''' get value of RSWP staked in rocket fuel ''' dex_contract_name = metadata['dex_contract'] dex_staked_amount = ForeignHash(foreign_contract=dex_contract_name, foreign_name='staked_amount') user_rocketfuel = dex_staked_amount[vk, token_contract_name] or 0 return user_rocketfuel @export def get_lp_value(vk:str, proposal_idx:int, token_contract_name: str): ''' get lp value from the dex contract ''' dex_contract_name = metadata['dex_contract'] dex_lp_points = ForeignHash(foreign_contract=dex_contract_name, foreign_name='lp_points') user_lp = dex_lp_points[token_contract_name, vk] or 0 return user_lp * LPWeight[proposal_idx,token_contract_name] @export def get_staked_lp_value(vk: str, proposal_idx: int, token_contract_name:str): lp_count = 0 staking_contract_names = metadata['lp_v_token_contracts'] lp_token_value = LPWeight[proposal_idx,token_contract_name] for contract in staking_contract_names: balances = ForeignHash(foreign_contract=contract, foreign_name='balances') vk_balance = balances[vk] or 0 lp_count += vk_balance return lp_count * LPWeight[proposal_idx,token_contract_name] def set_lp_token_value(proposal_idx: int, token_contract_name: str): ''' import the dex contract, get the reserves value for the TAU-RSWP pair, take the RSWP value of the LP and multiply it by 2 ''' dex_contract_name = metadata['dex_contract'] dex_reserves = ForeignHash(foreign_contract=dex_contract_name, foreign_name='reserves') dex_lp_points = ForeignHash(foreign_contract=dex_contract_name, foreign_name='lp_points') reserves = dex_reserves[token_contract_name] total_lp = dex_lp_points[token_contract_name] token_per_lp = reserves[1] / total_lp LPWeight[proposal_idx,token_contract_name] = token_per_lp * 2 def assert_operator(): assert ctx.caller == metadata['operator'], "You are not the listed operator for this contract." @export def change_meta(key: str, value: Any): assert ctx.caller == metadata['operator'], 'Only operator can set metadata!' metadata[key] = value
name con_lite_dao_test12_2

State Changes

Contract con_lite_dao_test12_2
Variable ProposalCount
New Value 0
 
Contract con_lite_dao_test12_2
Variable __code__
New Value __Proposals = Hash(default_value=None, contract='con_lite_dao_test12_2', name='Proposals') __Ballots = Hash(default_value=False, contract='con_lite_dao_test12_2', name='Ballots') __BallotCount = Hash(default_value=0, contract='con_lite_dao_test12_2', name='BallotCount') __ProcessedBallots = Hash(default_value=0, contract='con_lite_dao_test12_2', name='ProcessedBallots') __ProposalCount = Variable(contract='con_lite_dao_test12_2', name= 'ProposalCount') __VerifiedBallots = Hash(default_value=0, contract='con_lite_dao_test12_2', name='VerifiedBallots') __LPWeight = Hash(default_value=0, contract='con_lite_dao_test12_2', name= 'LPWeight') __metadata = Hash(default_value=None, contract='con_lite_dao_test12_2', name='metadata') I = importlib def ____(): __metadata['operator'] = ctx.caller __metadata['fee_currency'] = 'con_rswp_lst001' __metadata['fee_amount'] = 10 __metadata['token_contract'] = 'con_rswp_lst001' __metadata['v_token_contracts'] = ['con_staking_rswp_rswp_interop_v2'] __metadata['lp_v_token_contracts'] = ['con_liq_mining_rswp_rswp'] __metadata['dex_contract'] = 'con_rocketswap_official_v1_1' __metadata['max_description_length'] = 50 __metadata['max_choices_number'] = 4 __metadata['max_title_length'] = 20 __ProposalCount.set(0) @__export('con_lite_dao_test12_2') def create_proposal(title: str, description: str, date_decision: datetime. datetime, choices: list): assert len(title) > 4 and len(title) <= __metadata['max_title_length' ], f"Title must be more than 4 characters long and at most {__metadata['max_title_length']} long." assert len(description) > 10 and len(description) <= __metadata[ 'max_description_length' ], f"Description length must be more than 10 characters long and at most {__metadata['max_description_length']} long" assert date_decision > now, 'the decision date must take place in the future.' assert len(choices) > 1 and len(choices) <= __metadata['max_choices_number' ], f"you must specify at least 2 choices and at most {__metadata['max_choices_number']} choices" for choice in choices: assert len(choice) > 0, 'choice cannot be an empty string.' __deduct_fee() __ProposalCount.set(__ProposalCount.get() + 1) __Proposals[__ProposalCount.get()] = {'title': title, 'description': description, 'date_decision': date_decision, 'choices': choices, 'state': 'open'} proposal_idx = __ProposalCount.get() token_contract_name = __metadata['token_contract'] if __LPWeight[proposal_idx, token_contract_name] is 0: __set_lp_token_value(proposal_idx=proposal_idx, token_contract_name =token_contract_name) def __deduct_fee(): token_contract = I.import_module(__metadata['fee_currency']) token_contract.transfer_from(amount=__metadata['fee_amount'], to= __metadata['operator'], main_account=ctx.signer) @__export('con_lite_dao_test12_2') def count_ballots(proposal_idx: int, batch_size: int=None): if batch_size is None: batch_size = 100 """checks""" assert now > __Proposals[proposal_idx]['date_decision' ], 'It is not possible to count the ballots for this proposal yet' assert __Proposals[proposal_idx]['state' ] is not 'concluded', 'The ballots for this proposal have already been counted' assert __Ballots[proposal_idx, 'counted' ] is not True, 'this ballot has been counted.' """check if this proposal has a stored lp token weight, if no, calculate how much the LP weight is worth""" start_idx = 0 if __ProcessedBallots[proposal_idx] == None or __ProcessedBallots[ proposal_idx] == 0: __ProcessedBallots[proposal_idx] = 0 start_idx += 1 else: start_idx = __ProcessedBallots[proposal_idx] start_idx += 1 current_ballot_idx = 0 """count the ballots""" for i in range(0, batch_size): current_ballot_idx = start_idx + i voter_vk = __Ballots[proposal_idx, 'forwards_index', current_ballot_idx, 'user_vk'] __ProcessedBallots[proposal_idx, current_ballot_idx, 'choice' ] = __Ballots[proposal_idx, 'forwards_index', current_ballot_idx, 'choice'] __ProcessedBallots[proposal_idx, current_ballot_idx, 'user_vk' ] = voter_vk __ProcessedBallots[proposal_idx, current_ballot_idx, 'weight' ] = get_vk_weight(vk=voter_vk, proposal_idx=proposal_idx) if current_ballot_idx == __BallotCount[proposal_idx]: __Ballots[proposal_idx, 'counted'] = True __ProcessedBallots[proposal_idx] = current_ballot_idx return __ProcessedBallots[proposal_idx] = current_ballot_idx @__export('con_lite_dao_test12_2') def verify_ballots(proposal_idx: int, batch_size: int=None): if batch_size is None: batch_size = 100 """checks""" assert __Ballots[proposal_idx, 'counted' ] is True, 'ballots must be counted before verifying them' assert __Ballots[proposal_idx, 'verified' ] is not True, 'the ballots for this proposal have already been verified' assert __Proposals[proposal_idx]['state' ] is not 'concluded', 'this proposal has been concluded' start_idx = 0 if __VerifiedBallots[proposal_idx] == None or __VerifiedBallots[ proposal_idx] == 0: __VerifiedBallots[proposal_idx] = 0 start_idx += 1 else: start_idx = __VerifiedBallots[proposal_idx] start_idx += 1 current_ballot_idx = 0 for i in range(0, batch_size): current_ballot_idx = start_idx + 1 + i voter_vk = __ProcessedBallots[proposal_idx, current_ballot_idx, 'user_vk'] choice = __ProcessedBallots[proposal_idx, current_ballot_idx, 'choice'] processed_weight = __ProcessedBallots[proposal_idx, current_ballot_idx, 'weight'] current_weight = get_vk_weight(vk=voter_vk, proposal_idx=proposal_idx) if current_weight >= processed_weight - processed_weight * decimal( '0.05'): __VerifiedBallots[proposal_idx, choice] += current_weight if current_ballot_idx == __BallotCount[proposal_idx]: choices_len = len(__Proposals[proposal_idx]['choices']) __Ballots[proposal_idx, 'verified'] = True __Proposals[proposal_idx]['state'] = 'concluded' __Proposals[proposal_idx]['results'] = {} __Proposals[proposal_idx] = __Proposals[proposal_idx] for c in range(0, choices_len): __Proposals[proposal_idx]['results'][str(c) ] = __VerifiedBallots[proposal_idx, c] __Proposals[proposal_idx] = __Proposals[proposal_idx] __VerifiedBallots[proposal_idx] = current_ballot_idx return __VerifiedBallots[proposal_idx] = current_ballot_idx @__export('con_lite_dao_test12_2') def cast_ballot(proposal_idx: int, choice_idx: int): voter = ctx.signer ballot_idx = __BallotCount[proposal_idx] ballot_idx += 1 """checks""" assert __Proposals[proposal_idx] is not False assert choice_idx >= 0 and choice_idx < len(__Proposals[proposal_idx][ 'choices']), 'you must select a valid choice.' assert now < __Proposals[proposal_idx]['date_decision' ], 'It is too late to cast a ballot for this proposal.' assert __Ballots[proposal_idx, 'backwards_index', voter ] is False, 'you have already cast a ballot !' """record ballot""" __Ballots[proposal_idx, 'forwards_index', ballot_idx, 'choice' ] = choice_idx __Ballots[proposal_idx, 'forwards_index', ballot_idx, 'user_vk'] = voter __Ballots[proposal_idx, 'backwards_index', voter] = ballot_idx __BallotCount[proposal_idx] += 1 @__export('con_lite_dao_test12_2') def get_vk_weight(vk: str, proposal_idx: int): """ Get the rswp value of any tokens, vtokens and LP tokens for rswp pairs (staked or not). """ token_contract_name = __metadata['token_contract'] user_token_total = 0 user_token_total += get_token_value(vk=vk, token_contract_name= token_contract_name) user_token_total += get_staked_token_value(vk=vk) user_token_total += get_rocketfuel_value(vk=vk, token_contract_name= token_contract_name) user_token_total += get_lp_value(vk=vk, proposal_idx=proposal_idx, token_contract_name=token_contract_name) user_token_total += get_staked_lp_value(vk=vk, proposal_idx= proposal_idx, token_contract_name=token_contract_name) return user_token_total @__export('con_lite_dao_test12_2') def get_token_value(vk: str, token_contract_name: str): __balances = ForeignHash(foreign_contract=token_contract_name, foreign_name='balances', contract='con_lite_dao_test12_2', name= 'balances') token_balance = __balances[vk] return token_balance @__export('con_lite_dao_test12_2') def get_staked_token_value(vk: str): """iterate through v token contracts and get user balance.""" vk_balance = 0 staking_contract_names = __metadata['v_token_contracts'] for contract in staking_contract_names: __balances = ForeignHash(foreign_contract=contract, foreign_name= 'balances', contract='con_lite_dao_test12_2', name='balances') vk_balance += __balances[vk] return vk_balance @__export('con_lite_dao_test12_2') def get_rocketfuel_value(vk: str, token_contract_name: str): """ get value of RSWP staked in rocket fuel """ dex_contract_name = __metadata['dex_contract'] __dex_staked_amount = ForeignHash(foreign_contract=dex_contract_name, foreign_name='staked_amount', contract='con_lite_dao_test12_2', name='dex_staked_amount') user_rocketfuel = __dex_staked_amount[vk, token_contract_name] or 0 return user_rocketfuel @__export('con_lite_dao_test12_2') def get_lp_value(vk: str, proposal_idx: int, token_contract_name: str): """ get lp value from the dex contract """ dex_contract_name = __metadata['dex_contract'] __dex_lp_points = ForeignHash(foreign_contract=dex_contract_name, foreign_name='lp_points', contract='con_lite_dao_test12_2', name= 'dex_lp_points') user_lp = __dex_lp_points[token_contract_name, vk] or 0 return user_lp * __LPWeight[proposal_idx, token_contract_name] @__export('con_lite_dao_test12_2') def get_staked_lp_value(vk: str, proposal_idx: int, token_contract_name: str): lp_count = 0 staking_contract_names = __metadata['lp_v_token_contracts'] lp_token_value = __LPWeight[proposal_idx, token_contract_name] for contract in staking_contract_names: __balances = ForeignHash(foreign_contract=contract, foreign_name= 'balances', contract='con_lite_dao_test12_2', name='balances') vk_balance = __balances[vk] or 0 lp_count += vk_balance return lp_count * __LPWeight[proposal_idx, token_contract_name] def __set_lp_token_value(proposal_idx: int, token_contract_name: str): """ import the dex contract, get the reserves value for the TAU-RSWP pair, take the RSWP value of the LP and multiply it by 2 """ dex_contract_name = __metadata['dex_contract'] __dex_reserves = ForeignHash(foreign_contract=dex_contract_name, foreign_name='reserves', contract='con_lite_dao_test12_2', name= 'dex_reserves') __dex_lp_points = ForeignHash(foreign_contract=dex_contract_name, foreign_name='lp_points', contract='con_lite_dao_test12_2', name= 'dex_lp_points') reserves = __dex_reserves[token_contract_name] total_lp = __dex_lp_points[token_contract_name] token_per_lp = reserves[1] / total_lp __LPWeight[proposal_idx, token_contract_name] = token_per_lp * 2 def __assert_operator(): assert ctx.caller == __metadata['operator' ], 'You are not the listed operator for this contract.' @__export('con_lite_dao_test12_2') def change_meta(key: str, value: Any): assert ctx.caller == __metadata['operator' ], 'Only operator can set metadata!' __metadata[key] = value
 
Contract con_lite_dao_test12_2
Variable __compiled__
New Value e3000000000000000000000000060000004000000073b2010000650064006401640264038d035a01650064046401640564038d035a02650064066401640764038d035a03650064066401640864038d035a04650564016409640a8d025a06650064066401640b64038d035a07650064066401640c64038d035a08650064006401640d64038d035a09650a5a0b640e640f84005a0c650d64018301650e650e650f6a0f651064109c0464116412840483015a116413641484005a12650d6401830164356513651364159c0264166417840583015a14650d6401830164366513651364159c0264186419840583015a15650d6401830165136513641a9c02641b641c840483015a16650d64018301650e6513641d9c02641e641f840483015a17650d64018301650e650e64209c0264216422840483015a18650d64018301650e64239c0164246425840483015a19650d64018301650e650e64209c0264266427840483015a1a650d64018301650e6513650e64289c036429642a840483015a1b650d64018301650e6513650e64289c03642b642c840483015a1c6513650e642d9c02642e642f84045a1d6430643184005a1e650d64018301650e651f64329c0264336434840483015a206400530029374eda15636f6e5f6c6974655f64616f5f7465737431325f32da0950726f706f73616c732903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d6546da0742616c6c6f7473e900000000da0b42616c6c6f74436f756e74da1050726f63657373656442616c6c6f7473da0d50726f706f73616c436f756e74290272040000007205000000da0f566572696669656442616c6c6f7473da084c50576569676874da086d65746164617461630000000000000000000000000300000043000000736400000074006a01740264013c006402740264033c006404740264053c006402740264063c0064076701740264083c00640967017402640a3c00640b7402640c3c00640d7402640e3c00640f740264103c006411740264123c0074036a046413830101006400530029144eda086f70657261746f72da0f636f6e5f727377705f6c7374303031da0c6665655f63757272656e6379e90a000000da0a6665655f616d6f756e74da0e746f6b656e5f636f6e7472616374da20636f6e5f7374616b696e675f727377705f727377705f696e7465726f705f7632da11765f746f6b656e5f636f6e747261637473da18636f6e5f6c69715f6d696e696e675f727377705f72737770da146c705f765f746f6b656e5f636f6e747261637473da1c636f6e5f726f636b6574737761705f6f6666696369616c5f76315f31da0c6465785f636f6e7472616374e932000000da166d61785f6465736372697074696f6e5f6c656e677468e904000000da126d61785f63686f696365735f6e756d626572e914000000da106d61785f7469746c655f6c656e67746872070000002905da03637478da0663616c6c6572da0a5f5f6d65746164617461da0f5f5f50726f706f73616c436f756e74da03736574a90072250000007225000000da00da045f5f5f5f14000000731600000000010a010801080108010a010a01080108010801080172270000002904da057469746c65da0b6465736372697074696f6eda0d646174655f6465636973696f6eda0763686f69636573630400000000000000070000000600000043000000732401000074007c00830164016b04721c74007c0083017401640219006b017330740264037401640219009b0064049d038301820174007c01830164056b04724c74007c0183017401640619006b017360740264077401640619009b0064089d03830182017c0274036b047370740264098301820174007c038301640a6b04728c74007c0383017401640b19006b0173a07402640c7401640b19009b00640d9d038301820178207c0344005d187d0474007c048301640e6b0473a67402640f8301820171a6570074048300010074056a0674056a078300640a1700830101007c007c017c027c03641064119c05740874056a0783003c0074056a0783007d057401641219007d0674097c057c0666021900640e6b0890017220740a7c057c0664138d0201006400530029144e721c000000721f0000007a365469746c65206d757374206265206d6f7265207468616e20342063686172616374657273206c6f6e6720616e64206174206d6f7374207a06206c6f6e672e7211000000721b0000007a444465736372697074696f6e206c656e677468206d757374206265206d6f7265207468616e2031302063686172616374657273206c6f6e6720616e64206174206d6f7374207a05206c6f6e677a30746865206465636973696f6e2064617465206d7573742074616b6520706c61636520696e20746865206675747572652ee901000000721d0000007a30796f75206d7573742073706563696679206174206c6561737420322063686f6963657320616e64206174206d6f7374207a082063686f6963657372070000007a2163686f6963652063616e6e6f7420626520616e20656d70747920737472696e672eda046f70656e290572280000007229000000722a000000722b000000da05737461746572130000002902da0c70726f706f73616c5f696478da13746f6b656e5f636f6e74726163745f6e616d65290bda036c656e7222000000da0e417373657274696f6e4572726f72da036e6f77da0c5f5f6465647563745f66656572230000007224000000da03676574da0b5f5f50726f706f73616c73da0a5f5f4c50576569676874da145f5f7365745f6c705f746f6b656e5f76616c7565290772280000007229000000722a000000722b000000da0663686f696365722f0000007230000000722500000072250000007226000000da0f6372656174655f70726f706f73616c22000000732800000000031e01120114010a01120110011e0112010a011801060112010201060110010801080112010401723a000000630000000000000000010000000500000043000000732c00000074006a0174026401190083017d007c006a0374026402190074026403190074046a0564048d0301006400530029054e72100000007212000000720e0000002903da06616d6f756e74da02746fda0c6d61696e5f6163636f756e742906da0149da0d696d706f72745f6d6f64756c657222000000da0d7472616e736665725f66726f6d7220000000da067369676e65722901721300000072250000007225000000722600000072340000003b000000730600000000010e010a0172340000002902722f000000da0a62617463685f73697a6563020000000000000006000000060000004300000073300100007c0164006b08720c64017d01740074017c001900640219006b047324740264038301820174017c0019006404190064056b09733c740264068301820174037c0064076602190064086b0973547402640983018201640a7d0274047c00190064006b02737074047c001900640a6b027282640a74047c003c007c02640b37007d026e1074047c0019007d027c02640b37007d02640a7d03788c7405640a7c01830244005d7e7d047c027c0417007d0374037c00640c7c03640d660419007d0574037c00640c7c03640e6604190074047c007c03640e66033c007c0574047c007c03640d66033c0074067c057c00640f8d0274047c007c03641066033c007c0374077c0019006b0272a2640874037c00640766023c007c0374047c003c006400530071a257007c0374047c003c006400530029114ee964000000722a0000007a3d4974206973206e6f7420706f737369626c6520746f20636f756e74207468652062616c6c6f747320666f7220746869732070726f706f73616c20796574722e000000da09636f6e636c756465647a375468652062616c6c6f747320666f7220746869732070726f706f73616c206861766520616c7265616479206265656e20636f756e746564da07636f756e746564547a1d746869732062616c6c6f7420686173206265656e20636f756e7465642e7207000000722c000000da0e666f7277617264735f696e646578da07757365725f766b72390000002902da02766b722f000000da067765696768742908723300000072360000007232000000da095f5f42616c6c6f7473da125f5f50726f63657373656442616c6c6f7473da0572616e6765da0d6765745f766b5f776569676874da0d5f5f42616c6c6f74436f756e742906722f0000007242000000da0973746172745f696478da1263757272656e745f62616c6c6f745f696478da0169da08766f7465725f766b722500000072250000007226000000da0d636f756e745f62616c6c6f747341000000733a000000000208010402120106010a010e010a010e0204010e010a0108010a020801080104021001080106010a02060114020e0216010c010c010801080172530000006302000000000000000b000000060000004300000073bc0100007c0164006b08720c64017d0174007c0064026602190064036b087324740164048301820174007c0064056602190064036b09733c740164068301820174027c0019006407190064086b0973547401640983018201640a7d0274037c00190064006b02737074037c001900640a6b027282640a74037c003c007c02640b37007d026e1074037c0019007d027c02640b37007d02640a7d03900178167404640a7c018302440090015d067d047c02640b17007c0417007d0374057c007c03640c660319007d0574057c007c03640d660319007d0674057c007c03640e660319007d0774067c057c00640f8d027d087c087c077c07740764108301140018006b059001721674037c007c066602050019007c08370003003c007c0374087c0019006b0272a4740974027c0019006411190083017d09640374007c00640566023c00640874027c00190064073c00690074027c00190064123c0074027c00190074027c003c0078307404640a7c09830244005d227d0a74037c007c0a6602190074027c00190064121900740a7c0a83013c009001716e570074027c00190074027c003c007c0374037c003c006400530071a457007c0374037c003c006400530029134e72430000007245000000547a2d62616c6c6f7473206d75737420626520636f756e746564206265666f726520766572696679696e67207468656dda0876657269666965647a387468652062616c6c6f747320666f7220746869732070726f706f73616c206861766520616c7265616479206265656e207665726966696564722e00000072440000007a20746869732070726f706f73616c20686173206265656e20636f6e636c756465647207000000722c00000072470000007239000000724900000029027248000000722f0000007a04302e3035722b000000da07726573756c7473290b724a00000072320000007236000000da115f5f566572696669656442616c6c6f7473724c000000724b000000724d000000da07646563696d616c724e0000007231000000da03737472290b722f0000007242000000724f0000007250000000725100000072520000007239000000da1070726f6365737365645f776569676874da0e63757272656e745f776569676874da0b63686f696365735f6c656eda0163722500000072250000007226000000da0e7665726966795f62616c6c6f747369000000734e0000000002080104020a010e010a010e010a010e0104010e010a0108010a0208010801040114010c01060108010e0104010a010c0108010e0114010c0110010c010c010c010c01100222010c0108010801725d0000002902722f000000da0a63686f6963655f69647863020000000000000004000000060000004300000073be00000074006a017d0274027c0019007d037c03640137007d0374037c00190064026b097326740482017c0164036b0572427c01740574037c0019006404190083016b00734a7404640583018201740674037c001900640619006b007362740464078301820174077c0064087c026603190064026b08737c74046409830182017c0174077c00640a7c03640b66043c007c0274077c00640a7c03640c66043c007c0374077c0064087c0266033c0074027c00050019006401370003003c0064005300290d4e722c000000467207000000722b0000007a1f796f75206d7573742073656c65637420612076616c69642063686f6963652e722a0000007a32497420697320746f6f206c61746520746f206361737420612062616c6c6f7420666f7220746869732070726f706f73616c2eda0f6261636b77617264735f696e6465787a20796f75206861766520616c7265616479206361737420612062616c6c6f742021724600000072390000007247000000290872200000007241000000724e0000007236000000723200000072310000007233000000724a0000002904722f000000725e000000da05766f746572da0a62616c6c6f745f696478722500000072250000007226000000da0b636173745f62616c6c6f7497000000731c0000000002060108010802100112011201120106010c010e03100110010e01726200000029027248000000722f00000063020000000000000004000000060000004300000073620000007400640119007d0264027d037c0374017c007c0264038d0237007d037c0374027c0064048d0137007d037c0374037c007c0264038d0237007d037c0374047c007c017c0264058d0337007d037c0374057c007c017c0264058d0337007d037c03530029067a620a202020204765742074686520727377702076616c7565206f6620616e7920746f6b656e732c2076746f6b656e7320616e64204c5020746f6b656e7320666f72207273777020706169727320287374616b6564206f72206e6f74292e200a20202020721300000072070000002902724800000072300000002901724800000029037248000000722f000000723000000029067222000000da0f6765745f746f6b656e5f76616c7565da166765745f7374616b65645f746f6b656e5f76616c7565da146765745f726f636b65746675656c5f76616c7565da0c6765745f6c705f76616c7565da136765745f7374616b65645f6c705f76616c756529047248000000722f0000007230000000da10757365725f746f6b656e5f746f74616c722500000072250000007226000000724d000000ac000000731800000000050801040106010a010e0106010a0108010a0106010c01724d000000290272480000007230000000630200000000000000040000000600000043000000731c00000074007c0164016402640164038d047d027c027c0019007d037c03530029044eda0862616c616e63657372010000002904da10666f726569676e5f636f6e7472616374da0c666f726569676e5f6e616d65720400000072050000002901da0b466f726569676e48617368290472480000007230000000da0a5f5f62616c616e636573da0d746f6b656e5f62616c616e63657225000000722500000072260000007263000000bf000000730a00000000020401040108010801726300000029017248000000630100000000000000050000000700000043000000733a00000064017d017400640219007d0278287c0244005d207d0374017c0364036404640364058d047d047c017c047c00190037007d01711257007c01530029067a3769746572617465207468726f756768207620746f6b656e20636f6e74726163747320616e642067657420757365722062616c616e63652e72070000007215000000726900000072010000002904726a000000726b0000007204000000720500000029027222000000726c00000029057248000000da0a766b5f62616c616e6365da167374616b696e675f636f6e74726163745f6e616d65737204000000726d0000007225000000722500000072260000007264000000c8000000730e0000000003040108010a0104010c0110017264000000630200000000000000050000000600000043000000732c0000007400640119007d0274017c0264026403640464058d047d037c037c007c0166021900702664067d047c04530029077a310a202020206765742076616c7565206f662052535750207374616b656420696e20726f636b6574206675656c0a202020207219000000da0d7374616b65645f616d6f756e747201000000da116465785f7374616b65645f616d6f756e742904726a000000726b00000072040000007205000000720700000029027222000000726c000000290572480000007230000000da116465785f636f6e74726163745f6e616d65da135f5f6465785f7374616b65645f616d6f756e74da0f757365725f726f636b65746675656c7225000000722500000072260000007265000000d4000000730c000000000508010401040108011001726500000029037248000000722f000000723000000063030000000000000006000000060000004300000073380000007400640119007d0374017c0364026403640464058d047d047c047c027c0066021900702664067d057c0574027c017c02660219001400530029077a2c0a20202020676574206c702076616c75652066726f6d207468652064657820636f6e74726163740a202020207219000000da096c705f706f696e74737201000000da0d6465785f6c705f706f696e74732904726a000000726b00000072040000007205000000720700000029037222000000726c000000723700000029067248000000722f00000072300000007273000000da0f5f5f6465785f6c705f706f696e7473da07757365725f6c707225000000722500000072260000007266000000e1000000730c0000000005080104010401080110017266000000630300000000000000090000000700000043000000735a00000064017d037400640219007d0474017c017c02660219007d0578307c0444005d287d0674027c0664036404640364058d047d077c077c001900703c64017d087c037c0837007d03711e57007c0374017c017c02660219001400530029064e72070000007217000000726900000072010000002904726a000000726b00000072040000007205000000290372220000007237000000726c00000029097248000000722f0000007230000000da086c705f636f756e747270000000da0e6c705f746f6b656e5f76616c75657204000000726d000000726f0000007225000000722500000072260000007267000000ee00000073120000000002040108010c010a0104010c010c010c0172670000002902722f000000723000000063020000000000000008000000060000004300000073580000007400640119007d0274017c0264026403640464058d047d0374017c0264066403640764058d047d047c037c0119007d057c047c0119007d067c05640819007c061b007d077c076409140074027c007c0166023c00640a5300290b7a830a20202020696d706f7274207468652064657820636f6e74726163742c20676574207468652072657365727665732076616c756520666f7220746865205441552d5253575020706169722c2074616b652074686520525357502076616c7565206f6620746865204c5020616e64206d756c7469706c7920697420627920320a202020207219000000da0872657365727665737201000000da0c6465785f72657365727665732904726a000000726b0000007204000000720500000072760000007277000000722c000000e9020000004e29037222000000726c00000072370000002908722f00000072300000007273000000da0e5f5f6465785f72657365727665737278000000727c000000da08746f74616c5f6c70da0c746f6b656e5f7065725f6c707225000000722500000072260000007238000000fb000000731600000000040801040104010801040104010801080108010c017238000000630000000000000000000000000300000043000000731a00000074006a017402640119006b02731674036402830182016400530029034e720e0000007a32596f7520617265206e6f7420746865206c6973746564206f70657261746f7220666f72207468697320636f6e74726163742e290472200000007221000000722200000072320000007225000000722500000072250000007226000000da115f5f6173736572745f6f70657261746f720c01000073040000000001100172820000002902da036b6579da0576616c7565630200000000000000020000000300000043000000732200000074006a017402640119006b02731674036402830182017c0174027c003c006400530029034e720e0000007a1f4f6e6c79206f70657261746f722063616e20736574206d657461646174612129047220000000722100000072220000007232000000290272830000007284000000722500000072250000007226000000da0b6368616e67655f6d657461110100007306000000000210010601728500000029014e29014e2921da04486173687236000000724a000000724e000000724b000000da085661726961626c657223000000725600000072370000007222000000da09696d706f72746c6962723e0000007227000000da085f5f6578706f72747258000000da086461746574696d65da046c697374723a0000007234000000da03696e747253000000725d0000007262000000724d0000007263000000726400000072650000007266000000726700000072380000007282000000da03416e7972850000007225000000722500000072250000007226000000da083c6d6f64756c653e01000000735600000006010801060108010601080106010801040108010601080106010801060108010403080e0601080110170806060114270601142d0601121406011212060112080601100b0601120c0601140c0601140c101108050601
 
Contract con_lite_dao_test12_2
Variable __developer__
New Value 42a13c664781a24ab4aca978abb685d9c07ef9ae64a2af865a043e3186a66907
 
Contract con_lite_dao_test12_2
Variable __owner__
New Value null
 
Contract con_lite_dao_test12_2
Variable __submitted__
New Value 2023,4,24,22,17,35,0
 
Contract con_lite_dao_test12_2
Variable metadata
Key dex_contract
New Value con_rocketswap_official_v1_1
 
Contract con_lite_dao_test12_2
Variable metadata
Key fee_amount
New Value 10
 
Contract con_lite_dao_test12_2
Variable metadata
Key fee_currency
New Value con_rswp_lst001
 
Contract con_lite_dao_test12_2
Variable metadata
Key lp_v_token_contracts
New Value ["con_liq_mining_rswp_rswp"]
 
Contract con_lite_dao_test12_2
Variable metadata
Key max_choices_number
New Value 4
 
Contract con_lite_dao_test12_2
Variable metadata
Key max_description_length
New Value 50
 
Contract con_lite_dao_test12_2
Variable metadata
Key max_title_length
New Value 20
 
Contract con_lite_dao_test12_2
Variable metadata
Key operator
New Value 42a13c664781a24ab4aca978abb685d9c07ef9ae64a2af865a043e3186a66907
 
Contract con_lite_dao_test12_2
Variable metadata
Key token_contract
New Value con_rswp_lst001
 
Contract con_lite_dao_test12_2
Variable metadata
Key v_token_contracts
New Value ["con_staking_rswp_rswp_interop_v2"]
 
Contract currency
Variable balances
Key 42a13c664781a24ab4aca978abb685d9c07ef9ae64a2af865a043e3186a66907
New Value 3927.623509143335760638577846318653