Remove dead code

This commit is contained in:
Hanh 2022-08-18 18:19:25 +08:00
parent ba1283f8ef
commit b1542278ff
1 changed files with 0 additions and 165 deletions

View File

@ -217,168 +217,3 @@ impl GPUProcessor for MetalProcessor {
mem::size_of::<Data>()
}
}
const TEST_FVK: &str = "zxviews1q0kl7tavzyqqpq8efe0vpgzwc37zj0zr9j2quurncpsy74tdvh9c3racve9yfv6gkssvekw4sz6ueenvup6whupguzkg5rgp0kma37r4uxz9472w4zwra4jv6fm5dc2cevfpjsxdgndagslmgdwudhv4stklzfeszrlcnsqxyr2qt8tsf4yxs3he4rzllcly7xagfmnlycvvnvhhr9l9j6ad693rkueqys9f7mkc7aacxwp3tfc9hpvlckxnj4nwu6jef2x98jefhcgmpkrmn";
const ZECPAGES_FVK: &str = "zxviews1q0duytgcqqqqpqre26wkl45gvwwwd706xw608hucmvfalr759ejwf7qshjf5r9aa7323zulvz6plhttp5mltqcgs9t039cx2d09mgq05ts63n8u35hyv6h9nc9ctqqtue2u7cer2mqegunuulq2luhq3ywjcz35yyljewa4mgkgjzyfwh6fr6jd0dzd44ghk0nxdv2hnv4j5nxfwv24rwdmgllhe0p8568sgqt9ckt02v2kxf5ahtql6s0ltjpkckw8gtymxtxuu9gcr0swvz";
pub fn test_co() -> CompactOutput {
let mut cmu = hex::decode("263a4c43290ce7d644c0a3ab694bb4710a4c3b20a528e2297ac1d360b017f704").unwrap();
cmu.reverse(); // epk was is given in MSB
let mut epk = hex::decode("d8360fc851709bb8d53e1f7ad2bab2c28c70d2c3c570af6620599f078ab37e02").unwrap();
epk.reverse();
let ciphertext = hex::decode("c9c2479a4c936b25c4848a15fc5debad377f0305f7e744cfb550bc09da12922669b6a4d82d2c8d56d9c804682bae459474467aad").unwrap();
CompactOutput {
height: 500_000,
epk: epk.try_into().unwrap(),
cmu: cmu.try_into().unwrap(),
ciphertext: ciphertext.try_into().unwrap(),
}
}
fn main() {
env_logger::init();
let library_data = include_bytes!("./metal/main.metallib");
let mut rng = ChaChaRng::from_seed([0; 32]);
autoreleasepool(|| {
let device = Device::system_default().expect("no device found");
let command_queue = device.new_command_queue();
let library = device.new_library_with_data(&*library_data).unwrap();
let kernel = library.get_function("decrypt", None).unwrap();
let fvk = decode_extended_full_viewing_key(Network::MainNetwork.hrp_sapling_extended_full_viewing_key(),
ZECPAGES_FVK).unwrap().unwrap();
let ivk = fvk.fvk.vk.ivk();
let mut ivk_fr = ivk.0;
ivk_fr = ivk_fr.double(); // multiply by cofactor (8)
ivk_fr = ivk_fr.double();
ivk_fr = ivk_fr.double();
let ivk8 = ivk_fr.to_bytes();
println!("ivk8: {}", hex::encode(&ivk8));
// let ivk8 = hex::decode("40c075fe695bf7135f70dc098fca6fab6a26774f8a070472579d00309386be1b").unwrap();
// let mut ivk8 = [0u8; 32];
// ivk8[0] = 1;
// let x = Fq::random(&mut rng);
// ivk8.copy_from_slice(&x.to_bytes());
// let mut test_data = vec![Data::default(); n];
// for i in 0..n {
// test_data[i].epk.copy_from_slice(&epk);
// test_data[i].cipher[0..52].copy_from_slice(&ciphertext);
// }
let mut test_data: Vec<Data> = vec![];
let notes = vec![test_co()];
for n in notes.iter() {
let mut cipher = [0u8; 64];
cipher[0..52].copy_from_slice(&n.ciphertext);
let data = Data {
key: [0u8; 32],
epk: n.epk,
cipher,
};
test_data.push(data);
}
let n = notes.len();
let ivk_buffer = device.new_buffer_with_data(
unsafe { mem::transmute(ivk8.as_ptr()) },
32u64,
MTLResourceOptions::CPUCacheModeDefaultCache,
);
let data_buffer = {
device.new_buffer_with_data(
unsafe { mem::transmute(test_data.as_ptr()) },
(test_data.len() * mem::size_of::<Data>()) as u64,
MTLResourceOptions::CPUCacheModeDefaultCache,
)
};
let ptr = data_buffer.contents() as *mut u8;
unsafe {
let res: &[Data] = std::slice::from_raw_parts::<Data>(ptr.cast(), 1).try_into().unwrap();
println!("Before {}", hex::encode(&res[0].epk));
}
let command_buffer = command_queue.new_command_buffer();
let argument_encoder = kernel.new_argument_encoder(0);
let arg_buffer = device.new_buffer(
argument_encoder.encoded_length(),
MTLResourceOptions::empty(),
);
argument_encoder.set_argument_buffer(&arg_buffer, 0);
argument_encoder.set_buffer(0, &ivk_buffer, 0);
argument_encoder.set_buffer(1, &data_buffer, 0);
let encoder = command_buffer.new_compute_command_encoder();
let pipeline_state_descriptor = ComputePipelineDescriptor::new();
pipeline_state_descriptor.set_compute_function(Some(&kernel));
let pipeline_state = device
.new_compute_pipeline_state_with_function(
pipeline_state_descriptor.compute_function().unwrap(),
)
.unwrap();
encoder.set_compute_pipeline_state(&pipeline_state);
encoder.set_buffer(0, Some(&arg_buffer), 0);
encoder.set_buffer(1, Some(&data_buffer), 0);
encoder.use_resource(&ivk_buffer, MTLResourceUsage::Read);
encoder.use_resource(&data_buffer, MTLResourceUsage::Read | MTLResourceUsage::Write);
let width = 256;
let thread_group_count = MTLSize {
width: (test_data.len() as u64 + width - 1) / width,
height: 1,
depth: 1,
};
let thread_group_size = MTLSize {
width,
height: 1,
depth: 1,
};
encoder.dispatch_thread_groups(thread_group_count, thread_group_size);
encoder.end_encoding();
log::info!("Start - n = {}, n_groups = {}", n, thread_group_count.width);
let stopwatch = SystemTime::now();
command_buffer.commit();
command_buffer.wait_until_completed();
log::info!("Finish - {}", stopwatch.elapsed().unwrap().as_millis());
let ptr = data_buffer.contents() as *mut u8;
unsafe {
let res: &[Data] = std::slice::from_raw_parts::<Data>(ptr.cast(), n).try_into().unwrap();
let mut count = 0;
for i in 0..n {
let d = &res[i];
// let product = Fq::from_bytes(&ivk8).unwrap() - Fq::from_bytes(&d.epk).unwrap();
// let x = Fq::from_bytes(&d.key).unwrap();
// println!("{} {} {}", hex::encode(&d.epk), hex::encode(product.to_bytes()), hex::encode(&d.key));
// assert_eq!(product, Fq::from_bytes(&d.key).unwrap());
// println!("{}", hex::encode(&d.cipher));
let pt = &d.cipher;
let domain = SaplingDomain::for_height(MainNetwork, BlockHeight::from_u32(500_000));
if let Some((note, pa)) = domain.parse_note_plaintext_without_memo_ivk(&ivk, pt) {
if note.cmu().to_bytes() == notes[i].cmu.as_slice() {
// log::info!("{:?}", note);
// println!("{:?}", encode_payment_address(NETWORK.hrp_sapling_payment_address(), &pa));
count += 1;
}
}
}
log::info!("COUNT = {}", count);
}
});
}