From 81d2c3261c7435684f6eaa895a2768d096e67b44 Mon Sep 17 00:00:00 2001 From: Michael Vines Date: Wed, 6 Oct 2021 17:38:34 -0700 Subject: [PATCH] Derive Pod/Zeroable for Pubkey (cherry picked from commit f966859829615a0a5bfe5221903c70594f1ab3a9) # Conflicts: # Cargo.lock # programs/bpf/Cargo.lock # sdk/program/Cargo.toml --- Cargo.lock | 5 +++++ programs/bpf/Cargo.lock | 5 +++++ sdk/program/Cargo.toml | 8 ++++++++ sdk/program/src/pubkey.rs | 36 ++++++++++++++++++++---------------- 4 files changed, 38 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3714285448..a975fc795c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5130,7 +5130,12 @@ dependencies = [ "borsh-derive", "bs58 0.3.1", "bv", +<<<<<<< HEAD "curve25519-dalek 2.1.0", +======= + "bytemuck", + "curve25519-dalek 3.2.0", +>>>>>>> f96685982 (Derive Pod/Zeroable for Pubkey) "hex", "itertools 0.9.0", "lazy_static", diff --git a/programs/bpf/Cargo.lock b/programs/bpf/Cargo.lock index b32e6efc03..7ca8d0d0d7 100644 --- a/programs/bpf/Cargo.lock +++ b/programs/bpf/Cargo.lock @@ -3295,7 +3295,12 @@ dependencies = [ "borsh-derive", "bs58 0.3.1", "bv", +<<<<<<< HEAD "curve25519-dalek 2.1.0", +======= + "bytemuck", + "curve25519-dalek 3.2.0", +>>>>>>> f96685982 (Derive Pod/Zeroable for Pubkey) "hex", "itertools 0.9.0", "lazy_static", diff --git a/sdk/program/Cargo.toml b/sdk/program/Cargo.toml index 40ecda0440..6c0abef1d9 100644 --- a/sdk/program/Cargo.toml +++ b/sdk/program/Cargo.toml @@ -12,9 +12,17 @@ edition = "2018" [dependencies] bincode = "1.3.1" +<<<<<<< HEAD borsh = "0.9.0" borsh-derive = "0.9.0" bs58 = "0.3.1" +======= +blake3 = { version = "1.0.0", features = ["traits-preview"] } +borsh = "0.9.1" +borsh-derive = "0.9.1" +bs58 = "0.4.0" +bytemuck = { version = "1.7.2", features = ["derive"] } +>>>>>>> f96685982 (Derive Pod/Zeroable for Pubkey) bv = { version = "0.11.1", features = ["serde"] } hex = "0.4.2" itertools = "0.9.0" diff --git a/sdk/program/src/pubkey.rs b/sdk/program/src/pubkey.rs index fb35cdcb3b..fc1c90ec84 100644 --- a/sdk/program/src/pubkey.rs +++ b/sdk/program/src/pubkey.rs @@ -1,14 +1,16 @@ #![allow(clippy::integer_arithmetic)] -use crate::{decode_error::DecodeError, hash::hashv}; - -use borsh::{BorshDeserialize, BorshSchema, BorshSerialize}; -use num_derive::{FromPrimitive, ToPrimitive}; -use std::{ - convert::{Infallible, TryFrom}, - fmt, mem, - str::FromStr, +use { + crate::{decode_error::DecodeError, hash::hashv}, + borsh::{BorshDeserialize, BorshSchema, BorshSerialize}, + bytemuck::{Pod, Zeroable}, + num_derive::{FromPrimitive, ToPrimitive}, + std::{ + convert::{Infallible, TryFrom}, + fmt, mem, + str::FromStr, + }, + thiserror::Error, }; -use thiserror::Error; /// Number of bytes in a pubkey pub const PUBKEY_BYTES: usize = 32; @@ -48,20 +50,22 @@ impl From for PubkeyError { #[repr(transparent)] #[derive( - Serialize, - Deserialize, - BorshSerialize, + AbiExample, BorshDeserialize, BorshSchema, + BorshSerialize, Clone, Copy, Default, + Deserialize, Eq, - PartialEq, - Ord, - PartialOrd, Hash, - AbiExample, + Ord, + PartialEq, + PartialOrd, + Pod, + Serialize, + Zeroable, )] pub struct Pubkey([u8; 32]);