aens_update.aes
1 // AENS update tests, including interaction with AENSv1 2 3 include "Option.aes" 4 include "AENSCompat.aes" 5 contract interface OldAENSContract = 6 entrypoint set : (string, string, AENS.pointee) => unit 7 entrypoint lookup : (string, string) => AENS.pointee 8 entrypoint resolve_account : (string, string) => address 9 10 main contract AENSUpdate = 11 entrypoint remote_lookup(o : OldAENSContract, name : string, key : string) : AENSv2.pointee = 12 let pv1 = o.lookup(name, key) 13 AENSCompat.pointee_to_V2(pv1) 14 15 entrypoint remote_resolve(o : OldAENSContract, name : string, key : string) : address = 16 o.resolve_account(name, key) 17 18 entrypoint remote_set(o : OldAENSContract, name : string, key : string, ptr : AENSv2.pointee) = 19 let Some(pv1) = AENSCompat.pointee_from_V2(ptr) 20 o.set(name, key, pv1) 21 22 stateful entrypoint add_data_ptr(name : string, key : string, data : bytes()) = 23 set(name, key, AENSv2.DataPt(data)) 24 25 stateful entrypoint set(name : string, key : string, ptr : AENSv2.pointee) = 26 switch(AENSv2.lookup(name)) 27 Some(AENSv2.Name(_, _, pt_map)) => 28 AENSv2.update(Contract.address, name, None, None, Some(pt_map{ [key] = ptr })) 29 30 stateful entrypoint remove_ptr(name : string, key : string) = 31 switch(AENSv2.lookup(name)) 32 Some(AENSv2.Name(_, _, pt_map)) => 33 AENSv2.update(Contract.address, name, None, None, Some(Map.delete(key, pt_map))) 34 35 // stateful entrypoint old_interaction(c : OldAENSContract, owner : address, name : string) = 36 // let p : AENS.pointee = c.lookup(name, "key1") 37 // AENSv2.update(owner, name, None, None, Some({ ["key1"] = AENSCompat.pointee_to_V2(p) })) 38 // switch(AENSv2.lookup(name)) 39 // Some(AENSv2.Name(_, _, pt_map)) => 40 // c.set(name, "key2", Option.force(AENSCompat.pointee_from_V2(pt_map["key1"]))) 41 42 stateful entrypoint trf(name : string, to : address) = 43 AENSv2.transfer(Contract.address, to, name)