use avail_rust_client::{block::Block, error::Error, prelude::*};
use avail_rust_core::avail::vector::{
tx::{Execute, FailedSendMessageTxs, SendMessage},
types::{AddressedMessage, Message},
};
use codec::Encode;
pub async fn run_tests() -> Result<(), Error> {
tx_tests().await?;
Ok(())
}
pub async fn tx_tests() -> Result<(), Error> {
let client = Client::new(MAINNET_ENDPOINT).await.unwrap();
// SendMessage
{
let block = Block::new(client.clone(), 1903463).extrinsics();
let asset_id = H256::from_str("0x0000000000000000000000000000000000000000000000000000000000000000").unwrap();
let message = Message::FungibleToken { asset_id, amount: 25800000000000000000000 };
let submittable = client.tx().vector().send_message(
message,
"0xeddda7d7ac1263eafb00217307ac2b4ba6f09670000000000000000000000000",
2,
);
let expected_call = SendMessage::from_call(&submittable.call.encode()).unwrap();
let actual_ext = block.get::<SendMessage>(1).await.unwrap().unwrap();
assert_eq!(actual_ext.call.encode(), expected_call.encode());
}
// Execute
{
let block = Block::new(client.clone(), 1903968).extrinsics();
let asset_id = H256::from_str("0x0000000000000000000000000000000000000000000000000000000000000000").unwrap();
let message = Message::FungibleToken { asset_id, amount: 2936130000000000000000 };
let addressed_message = AddressedMessage {
message,
from: H256::from_str("0x4b8d27f119f611c8769cfec41e3be061518e1934000000000000000000000000").unwrap(),
to: H256::from_str("0x1c1cf883ae497a04a74e09c72355c5c05757b748cf2a8450f6174f058ed99a40").unwrap(),
origin_domain: 2,
destination_domain: 1,
id: 1784,
};
let account_proof = vec![
"0xf90211a0ab947607c0debf780e199ca140a86bc669319525fff465a2ea44c0a3abb95452a0a376aa53c054bc6746e74646f8eea64e1a1c87f6b1494b814aa45460650d290ea07f5306fe3c723774e0a28b24bc19b029d3a678a9fe3c41693528367f753f19d9a07f23c19dbee634331c76a0dc62ba46a09afe2faacc9612ccc7ff2b22df919a98a00f69a3f063b0f3cea03b8bcc4562bd8a9b92f8a7faa0ca164af60320325b6353a0e59e54c49ef6cb3522bb8d86e7bf98505c9a2973e7c12936b0c2c5dd53a15299a07fad634852a472858efa9f2e217bfc53cf46c5f7033ed0a5e8323521bb092d8ea0a9cb7d03d8352050a22d71c322494bec289cb0366b663cc058fe43c4282f13c2a0fba9465e4ac13348779605ceecf5ab7e85e475148b49ae655c2589ffeb070e83a08331c5011aee2251e8fb84ba8fc379e59994c4f6382046727c8658755ae382b3a0be947ac89579f26aa5396404a4f5a8a443afb7a74eaae1a02d05e98ba7ffc9a4a0240d1ec8d8407d47b41901e3eac14ef160661a1ae11aa45c757084f1423bbb43a0791ac00772a15555d316b8a79a48284fcca6aff1fed1754430cddace5c61529ca02a2d320f86e9b2333c4570428ba1754606606655876a8a2ea09e7914dd7af36da01fd7d180e16c9e090569104ac31cf26384929d81bd5a387502f0ee2f5f9f961aa02a22a97d87cc7c009b39a0ddefebdc1dc6de7aae2de1bea77aba70d0d945a92280",
"0xf90211a001163ec6aa45899de26855b3fae7a39201c325bd0589330ac056db7a2ececaeaa0775f7c6fc215a344a546a7a94620dff687451618e80e36ba952ea05ada0818c5a07ac05fabe95c510d40a26d33cc5454d5d23038bfeb0a8ad826933a899743ccfba0435e32822740ff8319d31a8eb768fd1f173d7f6df61f95d7c5dccbc07c90d780a0a64be8d811791385c60460b964469fab8819ce573041f1ffdf2f88d40fc1ccaba0158f84e3692f36a93949169bcd7bfd2416a4b7f66b4b53e9cc03a34ee8726493a0a7fc4c51758406c0f19686f57ba5eb29e22c629b40d42acfbb56f9da284d2a73a08ebfaae21d5987b9ef5174e054c8c45a9ec2cfa41240999c0e8be1704866d3aca07bace67b718e0ddf916cf0fa9c28cd546d44f1df827e63d4bebc4ea404860829a02d16d9f87adef89eea0de2e5788caf4a1fb5ff21c29ba1da6cbde76353654d5ba0203e933f80af49bc3939a7a40a35b02cd4844cacbe170954ca8a825fc2826323a05300d5af2a08e19ab20400c22fdceccdba89cca8bd0d110daee65b135ab8ebd4a0e35b68d64707db469a00058a02559e4b1d395334eedf7d427ac85607e016dcd8a065d3efcfdaa01cfb675e0a5d85fd1ac3128cc05d1ed9e3cec2c5eb4e0a26ec86a09506b4769bde17cf1d4b95bfdce7e2e4ab8cff4df3de8182bc8a32183e287a67a03c00154c67e4e30271dc930ea4a569dd595bcc9ac469dda683bd87a6bac0052480",
"0xf90211a068715e97edf00c436c11a71e9cb691795f1ee9db7095a92552a5738065d349aba0fb3f45ab90d0b167183670e2dc6c1f6f151b481070e6358cd01116f2f75f912aa0a7a75ef8526461904d5058e1b33d8e6a92aaaad8f8c09faf1127bb384f4d750ba074f93af54b3777a618c857adf363ff91e6b679c015e17c4cc944fb037a621c91a0141d02e490d2482f52bb1d0765e7b84ba4b258cc096b6c58135e388233ccf131a0e622873ca61c7d5b601957ebd03cc551f13cd80cf57094d7fc9e27ce69f50c50a063e7390145481e0436886f97f05192497cda9181f4b0cf63f333032ec28e7b37a01929b4189d777c802761ae819a1db7776aa5adf400df9f52e1798e4db81b71a0a0bd903e0c575c1d87c1fd266c7f340fdd3be1873d103757d8911095da5d7c7608a02282377d1f9adaa9023d779e671916604b4d188c4aafeb08dc2e4107df3e3f09a07b10bd0e57a0765131cdade13b82f1ba49a3c7370fb1f7415406f4f7bb1e84eba0c3a08943be4c89671269b7075096f760920a7b64192d0a337285377f6b507dc4a0f1f351a44197e6de9aa7d0cb4e5e209dac5d04b864dbe0c414d9ba4ca4fa56ada06fc70f8c567c519b187ecf7205362046db99a89f7211f385bf3c6070214d2445a0b4c6946005665ef56939c001544eb89418a8000189d1b34d408b06bd79c18dada0d6c97c91486b61d2c34b311097d072471bec3405b9425116f68e224d50af679f80",
"0xf90211a0515662c9aa52ef3a704b0272d857c8b822e52420dc66d0a133c5fb7062e50472a09617950e64c335ecc66fbb5ee3f5c50c3b02b3adf3ac68673a26aab95f629104a0f57350ca231e34ed22a1382fb5298ddeb2d5740bfb03a87cb06993336fd37121a0c55ad8ba504c91487e7171627c173b74e94f209fab97f942052d0643824d0fdfa049096da4c9ef44cc2dbdc24059fe9e4bd82542c55d41190c5b03beac29e5896ba0e318698084f937f676a8139de61f0985788ac2528e9d9d4098fae2713df08135a0338499534c35423dc76cea296c4441477e389f0c6a2c93053733d2ab464232efa0c3d415e46eb6e6aa288ceb1b00999822d09ba4fe04c0792d7cd8f9c336d55ad0a0e3ef616eb6ce9dec7264d96be4d25946094f8e40e06b93bd7b073c0c857b5bc4a04841c00c6819a2c7c510cb896a58509bfb039d0964fa7f52fc3c56567f494aefa006830ea1639dd8ca30ed88217a925193b22b329053c0753d5d29cd2bcaca0ca6a03d13cf9ae25859fb8df90728fcfe524130575055412f2daf3521b5b87910dceda09c400aea46cfed8bb7b65582b2af30f0c6fe5ac6a3597f16a79158234d107eb7a0081a1bc6813304dce7f34c0340210f34e3fa54d969facdd59f70eb5d17e5c9bda0ae70cb658efeee555ba78f5bb4d877c9a838659ed872d6924e64b96b1b47c7e2a029c6620b43e1861e5adfa96deb6f2d662a55f84d8ea58490571981e9d37a5a7380",
"0xf90211a0608795db228a551dde0e109594dac3ab1dcf1da014035e83263d68c56b46b37aa0daac6fff5ef331aac3f40ebd4b6cacfe6239ebf6a3c84071747d98d811e4b8a2a02c66e77c67794c66665cf2d3154258e7d391c45ac8f482750c89059cadc4ca23a0865f31a5a35d3a168c6e73fb20e2dea34e70e0795dbf5a0d3951d1b36fa1fc75a0ab3889c8975adef591b25bb9e3e157e24a6c6c288e9599fc83e50a1f0a369432a062fed043836368044ab1d760ab57b279ba711e82c435d69bd377a12e342b0ddba0e6f6547823be1e006035a5d467d918b91e65b775d8906207a91c0a74ac4ff7eca02086cea9d514cf88be7fc78f8f71de70b7914c5a11eba6fb09b81214eedd69cda0e12239697bd54f72cfbcdf8e0384b729fba0e9698c6f602ff9fda0a96af95075a090617eeee5b815c6e559a755d7daea0c400996b17a591e07793725f02ca8a559a0b72e36b8237026e15ad5af1eeb7c38b353522d77075d99f8872c67f8d80808eea06a5b336f136b732a41e477a57307617fbb600fc39ff69ffa33847d68e539259ca0800c105d994efc63a706555507623a2ecd236f507cde8f4cfe65ec6eee94ca09a0c49bd938a50b3c5ad10e30f8ab8188769dea4e99c5e59da8ec81413e2dc8340fa01b1f69de420161160ed9cd6dd9535d3faa617a2772a1564abb104de147e6ea49a0d74e60fde6de56f2ddfedf1998fe9ed0f42ceb703129a9f14b9c4a5ccb9ebd3e80",
"0xf90211a0423ed7d28a13a62be3d19d6649014691322b0a63523f2f664287eb82ea86294da07cdd5b71e867a73d8cf3a7b8df0a7230e2c92f683f5f02edc970ce56f25246f5a03577778475f99dca27474259d7437e0ac93cad4c8398923e6e7abd7facbc5da1a00807989111d7f463d74a19ace9af43cb66ad48a6982d412203b1bf9bf7a34a58a02a0b177cb829820bf1ef06ca5752948eb626e3a3010812ca0c731fbc3d4a3da4a092a35746b56fc1af1660e18b928f8e0da8bac905a0c056958da304915e12be03a09639f04eed79eda5c8a971bf7824e38e6a72e8961134883826fb1a2a98291849a05f633045ea86a44b79c065994c170a45bef0f52754b9d97ae60ace1e4bbd465aa02d38f37214ca49c5c2e6ed68c927d337cc1fd478d36779275747439eb2b72a32a0c73be090c2d631340ae94cf680ccbcd1c5c3028442fc00304f5a1b9892bd42f3a0311832816202ee03edea90d54ca4f26e6547ced87240ef7b59ea78d8781b8063a0d000c790488c92592edc939c0f67dfb929b2ac799766b970e933a0a1d0f9b8f1a0e6528514cd39877c432b9ca8d6fc8e07a9eb839cb917c97a010229ac900579caa0b6ee1127698999abed2b9cd148184d2d10ef33c19bb4a852671eb4c152797db8a024e0dceb0bc86d05a970cdc03b3fcbf5f5dbca88997c164a21226b6bd5012653a0ab26396e82f7af7bd67fec9f55f117cb57786b01bb50fcb1bfeb82d196a6803680",
"0xf90171a01b58bed50684419317c23334b686cceec92d841242dd526e15ca064640eb511b80a0dab516b461123480e77935ad666b2acc3590dde00de8741c1174025b9b82179ba0788d7842146ff8ead66001717d626cb58cde706357fb7612b7d3cc148c477142a0d09e27c26fcb6d65399e2c90d980531a66e0bd828179620431241122d739f47ba083deb6402ba239da743b83863a13f21da379f408bf6db016cc05e27b6ec435c0a0cd64fd89f64917c725c5f32e55c5f7cb004369121cb71b573580a319dceade2080a0aa387900d1a7798ebca71e8ed8d4555c2a0fb6a3c542b6cf7a56c65331a35b408080a0328be9d7bdad632bc7a07bcbe06ba644fbeccd4ab7fa9fcd5cb0ad063fb20bcba0cf361dc37f75d0953892b90f14dfb4157eb37d9f57343768b879933f50f2fd0380a024d9efc94efc3e56285bdc943099d77774eec1b8cd2dc86820d3a91d57bbc9b3a07ae8b1dd895445f59f7ae43dc63f71f72adb00502a0388a18d0ab2aacaf34b8e80",
"0xf871808080808080a016dd912e29acf02edbd2f6590951ef5ed9d1cd070d7968b72ad9e10cf49dfdf28080a09366965d4f991f5c0f932012f3b4a05bd39c0f2c9bd83729b3bfe1858ed9a40880808080a08f48353d5db798e6618b75a674b6f7a521321563c415f3260cb4ac5732c732e88080",
"0xf8669d2016ff2a8aacf87683d68c6fb7e7d036a7e6709c2d77c3a47889d56b3bb846f8440280a0c6a1db994093eb4a4f8da8ef66da4da584e47ddd3843472719161eb627c1d48aa0557b11e3344ccfefa08e5bf9e4f66001c0736386794fa8f1f1f702537bc65aaf",
];
let storage_proof = vec![
"0xf90211a0008d43b73c8a6d3649183869436f4df36bbb5910f0edb0811ca1f09645c12297a0c117a2899f676c1609dffeb662bae6e144625783af25f611834f8fb6a96328f4a0f704ce69c9e9f6890e792c12a7cfc757a09a79741cebd44e0f625ccfcb8da1b5a0eab340301d11f7616c32c0286a22dc440788fda29099a793377aed3b4b3b9353a06b796d99ba237c424fe5ffc632c2585219875c297c2f2ce3b9d6da85b1e02b34a063557b56fd82580e932b3d57c25396627b01ee311b00492d6b9e8eb68ab37672a09c46cfbe869014db8b63137017ab848b544edc16522debac153d4c857f40411ea01c414575b3b6ff46ca17efb5a3102ba3c9bffcfb9427953019fbd62bf87a91cea062b6e9d3a0f9162b5779792b872a218eaada2d9ae6848bf4430af10804b223e8a036c0335e2f87c75fee56dc78d1f783ab0cd4fdcd3ef32e2ef6e2a08906d408d8a027bf76760b1f72145581dd8ebb10f18ff30900f33a2c23c1149c1da02541f6b9a0088aef127578c5e4f9e5aeab07f4c08fe59f1018e2cd524df612c361585c2b61a00b15bacc73ad1c0746963a4e89b48d3cf2e550afaf95e93858e9363254d336cba070b34172cb209c69383722a686d3ac1955a43ed32081dc94e05b044fc10bd006a020b7993080048a1811edabfcffbf374900307d3181f2d4dab25e1713c9ed6734a095cfaf13147986352d467e778789dec20b3f73301607aaf304c8278903cf2e2580",
"0xf90211a0e1a6d70de351c1d9d42be9652a456c93d01d856e5be2bb32ee8ae1a1ed217519a01a0b616361336407d87e332e5fafe1c64a9ab59145d9a06b136d3692b32cd4f7a0189de19a2a46ee8df901852c41a0cd5a0f8be86fc86b2efa152a4eb409bba51ca038498969065a87f6aefdedbddeb4066c0b3c352f3760ca15d172a18d0776ee03a0c0d521fa0470599b8807d1a0d74c06ac8130a14fa63663af07765d33bf505935a0fedaa0feee7cfdc823ea6bd9d1c691bb3e6256f264285a58cef1053da8a8d6b5a0f36b817f1530d370c957719606588d85d8af44e89fbd47b4a97a9cd7ebdcd014a01f97eec7432148667b304d38c62cf5a01e5da44a273fa6fb1fe9aed50b7f71b5a098b933d046ad47692eb2ae32b3893d17fe542d35b07874a15f4e87c250fdb90aa02fb18841387603344907367bc4c4bc07c58a5b1d1072294b22ad08c71c9eae1da0c0ccd67f7cbfb446f65a452b4f39dab932340e2f6937247044410b5fc5a11242a05443c3f1c1e584ccd9c1e39ae7aac6118d4ce68ff0e70abffcc7fe1e535ddba2a087c714730477dbdfdfe5c7bfa24d2ad33eba945addb64f6488ab7659eca09bafa048ef4bb1ed104de13ff466a5c0de80380ea8e176f83af8251339ec7129f950b1a0e5a351f63a8bf00655ce233331fed1873c63ba212526ef867dc34e0c501fc830a0475de973f0992936c9fd082db7fa629095c113abc70ab2873c5804ad769a5a4080",
"0xf901d180a0ce2f29457b8a2f0c0157e414e881a712cde6d781852a2d968c5100221c4309bca0828f4a2a5e0fe8ff58d66a67c5fc64e2374ad563f81bf6dacbfa6e508502b78ca022a70215ab6fa409894cc842491393e19969747a3e5b017f5c23181559aadceaa02fd89b23c5a108077342fa832463d319fe77ecc0eb3b9090aacbf8e84bdf6a3ca07791f2da623f2296039fb1b97e600e716c0f8b2efaff505634da3deba3e9d74fa05cbc70e75c88d2836e272d6c71e0ddb48916801f43fc7f8e88bfc37ad0127a0fa041f9b34d38897099f4988fe84b234bfd11c1e7e096a650372ea6c1336c6ac886a0365582ea464357cb8146f669bf666a29a2a50092378c43b04a5ff0ccec8661a1a0ca725998ad434a14083625ea527284b0c9cdaa5712dd75b0edf673b8f4143adfa0bcd4cfdc2f7ec0ddff2496b029184875761fce248c80842d42802ca23e1592e9a02d011aaaa2ffd8d0accbae23d998b752d6a183dd17fd2536f2e018289dc062d580a00bb6eb6170572b46622db2cf964692dadb139481a475c422c5c0d442408d0ab8a0fcf2fa08e39442ded5ee16200f9efe69eeb220493edd6bcd7d75c3f96e1e8c26a0553c6a7d027c93597501a34801809f371587519f5cf29450c3a85dc86091854b80",
"0xf87180a043d0d77d004f543f619afd9613753b614350e1e190704b3e59f1b61edc84b6888080a06080566883ff54890fcd026e83bb23f33965e316415bb2b668701acebece213d80808080808080a0c3f9ec24be5d314747dd7d689b7b91d1ce6a35fd41449aef7e1886afd9e152be80808080",
"0xf8429f20c08e1fd9fb7352d940a0a8c647b3dfb4489d664c1955732ad478e09eb5ffa1a0dee351096c174c75f94ed52cbb726cf80e70096efeed998a2648ea5e9f14d69e",
];
let account_proof = account_proof
.into_iter()
.map(|x| const_hex::decode(x).unwrap())
.collect();
let storage_proof = storage_proof
.into_iter()
.map(|x| const_hex::decode(x).unwrap())
.collect();
let submittable = client
.tx()
.vector()
.execute(12612416, addressed_message, account_proof, storage_proof);
let expected_call = Execute::from_call(&submittable.call.encode()).unwrap();
let actual_ext = block.get::<Execute>(1).await.unwrap().unwrap();
assert_eq!(actual_ext.call.encode(), expected_call.encode());
}
// SendMessage
{
let block = Block::new(client.clone(), 1381297).extrinsics();
let submittable = client.tx().vector().failed_send_message_txs(vec![]);
let expected_call = FailedSendMessageTxs::from_call(&submittable.call.encode()).unwrap();
let actual_ext = block.get::<FailedSendMessageTxs>(1).await.unwrap().unwrap();
assert_eq!(actual_ext.call.encode(), expected_call.encode());
}
Ok(())
}