diff --git a/Cargo.lock b/Cargo.lock
index a76b167aff..261bac7a67 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -828,6 +828,7 @@ name = "disassembler"
version = "0.1.0"
dependencies = [
"leo-ast",
+ "leo-errors",
"leo-span",
"snarkvm",
]
@@ -1443,7 +1444,6 @@ dependencies = [
"rand",
"rand_chacha",
"rand_core",
- "reqwest",
"retriever",
"rusty-hook",
"self_update 0.39.0",
@@ -1605,16 +1605,6 @@ version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
-[[package]]
-name = "mime_guess"
-version = "2.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef"
-dependencies = [
- "mime",
- "unicase",
-]
-
[[package]]
name = "minimal-lexical"
version = "0.2.1"
@@ -2165,7 +2155,6 @@ dependencies = [
"js-sys",
"log",
"mime",
- "mime_guess",
"native-tls",
"once_cell",
"percent-encoding",
@@ -2197,6 +2186,7 @@ dependencies = [
"serde",
"serde_json",
"sha2",
+ "tempfile",
"toml 0.8.6",
"ureq",
]
@@ -3795,15 +3785,6 @@ version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
-[[package]]
-name = "unicase"
-version = "2.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
-dependencies = [
- "version_check",
-]
-
[[package]]
name = "unicode-bidi"
version = "0.3.13"
diff --git a/Cargo.toml b/Cargo.toml
index 91db79db88..715f3652d8 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -131,10 +131,6 @@ default-features = false
[dependencies.rand_core]
version = "0.6.4"
-[dependencies.reqwest]
-version = "0.11.22"
-features = [ "blocking", "json", "multipart" ]
-
[dependencies.self_update]
version = "0.39.0"
features = [ "archive-zip" ]
diff --git a/errors/README.md b/errors/README.md
index a3bfcfaf63..392b6a83f1 100644
--- a/errors/README.md
+++ b/errors/README.md
@@ -73,3 +73,7 @@ When SnarkVM implements better error codes and messages, we can bubble them up.
### State
The errors for the `leo-state` crate. Its error codes will range from 1_000-1_999 and be prefixed with the characters `STA`.
+
+### Utils
+
+The errors related to dependency retrieval in the `utils` crate. Its error codes will range from 10_000-10_999 and be prefixed with the characters `DEP`.
diff --git a/errors/src/errors/cli/cli_errors.rs b/errors/src/errors/cli/cli_errors.rs
index fbdc439ec2..66944ad01c 100644
--- a/errors/src/errors/cli/cli_errors.rs
+++ b/errors/src/errors/cli/cli_errors.rs
@@ -207,5 +207,11 @@ create_messages!(
help: None,
}
+ @formatted
+ failed_to_retrieve_dependencies {
+ args: (error: impl Display),
+ msg: format!("Failed to retrieve dependencies. {error}"),
+ help: None,
+ }
);
diff --git a/errors/src/errors/mod.rs b/errors/src/errors/mod.rs
index e890d7761b..a747a1bef6 100644
--- a/errors/src/errors/mod.rs
+++ b/errors/src/errors/mod.rs
@@ -50,9 +50,12 @@ pub use self::parser::*;
/// Contains the Type Checker error definitions.
pub mod type_checker;
-
pub use self::type_checker::*;
+/// Contains the Utils error definitions.
+pub mod utils;
+pub use self::utils::*;
+
/// The LeoError type that contains all sub error types.
/// This allows a unified error type throughout the Leo crates.
#[derive(Debug, Error)]
@@ -88,6 +91,9 @@ pub enum LeoError {
/// not re-displaying an error.
#[error("")]
LastErrorCode(i32),
+ /// Represents a Utils Error in a Leo Error
+ #[error(transparent)]
+ UtilError(#[from] UtilError),
/// Anyhow errors.
#[error(transparent)]
Anyhow(#[from] anyhow::Error),
@@ -108,6 +114,7 @@ impl LeoError {
TypeCheckerError(error) => error.error_code(),
LoopUnrollerError(error) => error.error_code(),
FlattenError(error) => error.error_code(),
+ UtilError(error) => error.error_code(),
LastErrorCode(_) => unreachable!(),
Anyhow(_) => unimplemented!(), // todo: implement error codes for snarkvm errors.
}
@@ -127,6 +134,7 @@ impl LeoError {
TypeCheckerError(error) => error.exit_code(),
LoopUnrollerError(error) => error.exit_code(),
FlattenError(error) => error.exit_code(),
+ UtilError(error) => error.exit_code(),
LastErrorCode(code) => *code,
Anyhow(_) => unimplemented!(), // todo: implement exit codes for snarkvm errors.
}
diff --git a/errors/src/errors/utils/mod.rs b/errors/src/errors/utils/mod.rs
new file mode 100644
index 0000000000..359148e096
--- /dev/null
+++ b/errors/src/errors/utils/mod.rs
@@ -0,0 +1,19 @@
+// Copyright (C) 2019-2023 Aleo Systems Inc.
+// This file is part of the Leo library.
+
+// The Leo library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// The Leo library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with the Leo library. If not, see .
+
+/// This module contains the Input error definitions.
+pub mod util_errors;
+pub use self::util_errors::*;
diff --git a/errors/src/errors/utils/util_errors.rs b/errors/src/errors/utils/util_errors.rs
new file mode 100644
index 0000000000..2de440a53b
--- /dev/null
+++ b/errors/src/errors/utils/util_errors.rs
@@ -0,0 +1,77 @@
+// Copyright (C) 2019-2023 Aleo Systems Inc.
+// This file is part of the Leo library.
+
+// The Leo library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// The Leo library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with the Leo library. If not, see .
+
+use crate::create_messages;
+use std::{
+ error::Error as ErrorArg,
+ fmt::{Debug, Display},
+};
+
+create_messages!(
+ /// InputError enum that represents all the errors for the `utils` crate.
+ UtilError,
+ code_mask: 10000i32,
+ code_prefix: "UTL",
+
+ @formatted
+ util_file_io_error {
+ args: (error: impl ErrorArg),
+ msg: format!("File system io error: {error}"),
+ help: None,
+ }
+
+ @formatted
+ toml_serizalization_error {
+ args: (error: impl ErrorArg),
+ msg: format!("TOML serialization error: {error}"),
+ help: None,
+ }
+
+ @formatted
+ json_serialization_error {
+ args: (error: impl ErrorArg),
+ msg: format!("JSON serialization error: {error}"),
+ help: None,
+ }
+
+ @formatted
+ snarkvm_parsing_error {
+ args: (),
+ msg: format!("SnarkVM failure to parse `.aleo` program"),
+ help: None,
+ }
+
+ @formatted
+ circular_dependency_error {
+ args: (),
+ msg: format!("Circular dependency detected"),
+ help: None,
+ }
+
+ @formatted
+ network_error {
+ args: (url: impl Display, status: impl Display),
+ msg: format!("Failed network request to {url}. Status: {status}"),
+ help: None,
+ }
+
+ @formatted
+ duplicate_dependency_name_error {
+ args: (dependency: impl Display),
+ msg: format!("Duplicate dependency found: {dependency}"),
+ help: None,
+ }
+);
diff --git a/leo/cli/cli.rs b/leo/cli/cli.rs
index c3105f3edb..30104068be 100644
--- a/leo/cli/cli.rs
+++ b/leo/cli/cli.rs
@@ -135,9 +135,10 @@ pub fn run_with_args(cli: CLI) -> Result<()> {
}
#[test]
-pub fn build_test() -> Result<()> {
+pub fn build_nested_test() -> Result<()> {
use leo_span::symbol::create_session_if_not_set_then;
- const BUILD_DIRECTORY: &str = "utils/tmp/project";
+ use std::env;
+ const BUILD_DIRECTORY: &str = "utils/tmp/nested";
let cli = CLI {
debug: false,
@@ -145,41 +146,17 @@ pub fn build_test() -> Result<()> {
command: Commands::Build { command: Build { options: Default::default() } },
path: Some(PathBuf::from(BUILD_DIRECTORY)),
};
- create_session_if_not_set_then(|_| {
- run_with_args(cli).expect("Failed to run build command");
- });
- Ok(())
-}
-#[test]
-pub fn build_super_simple_test() -> Result<()> {
- use leo_span::symbol::create_session_if_not_set_then;
- const BUILD_DIRECTORY: &str = "utils/tmp/super_simple";
- let cli = CLI {
- debug: false,
- quiet: false,
- command: Commands::Build { command: Build { options: Default::default() } },
- path: Some(PathBuf::from(BUILD_DIRECTORY)),
- };
+ // Set $HOME to tmp directory so that tests do not modify users real home directory
+ let original_home = env::var("HOME").unwrap();
+ env::set_var("HOME", "utils/tmp");
+
create_session_if_not_set_then(|_| {
run_with_args(cli).expect("Failed to run build command");
});
- Ok(())
-}
-#[test]
-pub fn build_nested_test() -> Result<()> {
- use leo_span::symbol::create_session_if_not_set_then;
- const BUILD_DIRECTORY: &str = "utils/tmp/nested";
+ // Reset $HOME
+ env::set_var("HOME", original_home);
- let cli = CLI {
- debug: false,
- quiet: false,
- command: Commands::Build { command: Build { options: Default::default() } },
- path: Some(PathBuf::from(BUILD_DIRECTORY)),
- };
- create_session_if_not_set_then(|_| {
- run_with_args(cli).expect("Failed to run build command");
- });
Ok(())
}
diff --git a/leo/cli/commands/build.rs b/leo/cli/commands/build.rs
index 93acc414bb..305144dcec 100644
--- a/leo/cli/commands/build.rs
+++ b/leo/cli/commands/build.rs
@@ -232,10 +232,15 @@ fn compile_leo_file(
});
// Retrieve dependencies from `program.json`
- let mut retriever = Retriever::new(package_path);
+ let mut retriever = Retriever::new(package_path)
+ .map_err(|err| CliError::failed_to_retrieve_dependencies(err, Default::default()))?;
// Only retrieve dependencies for main leo program
- let stubs: IndexMap = if is_import { IndexMap::new() } else { retriever.retrieve() };
+ let stubs: IndexMap = if is_import {
+ IndexMap::new()
+ } else {
+ retriever.retrieve().map_err(|err| CliError::failed_to_retrieve_dependencies(err, Default::default()))?
+ };
// Create a new instance of the Leo compiler.
let mut compiler = Compiler::new(
diff --git a/utils/disassembler/Cargo.toml b/utils/disassembler/Cargo.toml
index 346445ba1e..16c7f2ffbd 100644
--- a/utils/disassembler/Cargo.toml
+++ b/utils/disassembler/Cargo.toml
@@ -14,4 +14,8 @@ version = "=1.10.0"
[dependencies.leo-span]
path = "../../compiler/span"
-version = "1.9.3"
+version = "1.10.0"
+
+[dependencies.leo-errors]
+path = "../../errors"
+version = "1.10.0"
diff --git a/utils/disassembler/src/lib.rs b/utils/disassembler/src/lib.rs
index 51e602b109..c7fb06e05b 100644
--- a/utils/disassembler/src/lib.rs
+++ b/utils/disassembler/src/lib.rs
@@ -22,6 +22,7 @@ use std::str::FromStr;
type CurrentNetwork = Testnet3;
use leo_ast::{FunctionStub, Identifier, ProgramId, Struct, Stub};
+use leo_errors::UtilError;
pub fn disassemble, Command: CommandTrait>(
program: ProgramCore,
@@ -53,9 +54,11 @@ pub fn disassemble, Command: Comman
}
}
-pub fn disassemble_from_str(program: String) -> Stub {
- let program = Program::::from_str(&program);
- disassemble(program.expect("Failed to parse program")) // TODO: Handle error
+pub fn disassemble_from_str(program: String) -> Result {
+ match Program::::from_str(&program) {
+ Ok(p) => Ok(disassemble(p)),
+ Err(_) => Err(UtilError::snarkvm_parsing_error(Default::default())),
+ }
}
#[cfg(test)]
diff --git a/utils/retriever/Cargo.toml b/utils/retriever/Cargo.toml
index 7b2004dfaa..0059d2586d 100644
--- a/utils/retriever/Cargo.toml
+++ b/utils/retriever/Cargo.toml
@@ -5,15 +5,44 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+[dependencies.serde]
+version = "1.0"
+features = [ "derive"]
+
+[dependencies.serde_json]
+version = "1.0"
+
+[dependencies.leo-errors]
+path = "../../errors"
+version = "=1.10.0"
+
+[dependencies.indexmap]
+version = "1.9"
+features = [ "serde-1" ]
+
+[dependencies.leo-ast]
+version = "1.9.4"
+path = "../../compiler/ast"
+
+[dependencies.toml]
+version = "0.8.6"
+
+[dependencies.disassembler]
+version = "0.1.0"
+path = "../disassembler"
+
+[dependencies.sha2]
+version = "0.10.8"
+
+[dependencies.leo-span]
+version = "1.9.4"
+path = "../../compiler/span"
+
+[dependencies.ureq]
+version = "2.7"
+
+[dependencies.leo-passes]
+version = "1.9.4"
+path = "../../compiler/passes"
[dependencies]
-serde = { version = "1.0.188", features = ["derive"] }
-serde_json = "1.0.107"
-leo-errors = {version = "1.9.4", path = "../../errors"}
-indexmap = "1.9"
-leo-ast = {version = "1.9.4", path = "../../compiler/ast"}
-toml = "0.8.6"
-disassembler = {version = "0.1.0", path = "../disassembler"}
-sha2 = { version = "0.10.8", features = [] }
-leo-span = {version = "1.9.4", path = "../../compiler/span"}
-ureq = "2.7"
-leo-passes = {version = "1.9.4", path = "../../compiler/passes"}
+tempfile = "3.8.1"
\ No newline at end of file
diff --git a/utils/retriever/src/lib.rs b/utils/retriever/src/lib.rs
index d95d207a66..695097723c 100644
--- a/utils/retriever/src/lib.rs
+++ b/utils/retriever/src/lib.rs
@@ -17,11 +17,13 @@
use disassembler::disassemble_from_str;
use indexmap::{IndexMap, IndexSet};
use leo_ast::Stub;
+use leo_errors::UtilError;
use leo_passes::{common::DiGraph, DiGraphError};
use leo_span::Symbol;
use serde::{Deserialize, Serialize};
use sha2::{Digest, Sha256};
use std::{
+ env,
fmt,
fs,
fs::File,
@@ -30,7 +32,6 @@ use std::{
};
const ALEO_EXPLORER_URL: &str = "https://api.explorer.aleo.org/v1";
-const ALEO_REGISTRY_DIRECTORY: &str = "../tmp/.aleo";
// Struct representation of program's `program.json` specification
#[derive(Debug, Clone, Serialize, Deserialize)]
@@ -107,20 +108,21 @@ struct LockFileEntry {
impl Retriever {
// Initialize a new Retriever
- pub fn new(path: &Path) -> Self {
+ pub fn new(path: &Path) -> Result {
let lock_path = path.to_path_buf().join("leo.lock");
if !lock_path.exists() {
- std::fs::create_dir_all(path).expect("Failed to project directory.");
- File::create(lock_path.clone()).expect("Failed to create `leo.lock`");
+ std::fs::create_dir_all(path).map_err(|err| UtilError::util_file_io_error(err, Default::default()))?; // TODO: How to get rid of requirement for span?
+ File::create(lock_path.clone()).map_err(|err| UtilError::util_file_io_error(err, Default::default()))?;
}
- let mut file = File::open(lock_path).expect("Failed to open `leo.lock`.");
+ let mut file = File::open(lock_path).map_err(|err| UtilError::util_file_io_error(err, Default::default()))?;
// Read `leo.lock` into a string, and deserialize from TOML to a `LockFile` struct.
let mut lock_file_contents = String::new();
- file.read_to_string(&mut lock_file_contents).expect("Failed to read `leo.lock`.");
- let parsed_lock_file: IndexMap> =
- toml::from_str(&lock_file_contents).expect("Failed to parse `leo.lock`.");
+ file.read_to_string(&mut lock_file_contents)
+ .map_err(|err| UtilError::util_file_io_error(err, Default::default()))?;
+ let parsed_lock_file: IndexMap> = toml::from_str(&lock_file_contents)
+ .map_err(|err| UtilError::toml_serizalization_error(err, Default::default()))?;
// Construct a mapping of all programs in the `leo.lock` file to their specification.
let mut lock_file_map = IndexMap::new();
@@ -153,28 +155,29 @@ impl Retriever {
}
// Open `program.json` which is located at `package_path/program.json`.
- let mut file = File::open(path.join("program.json")).expect("Failed to open `program.json`.");
+ let mut file = File::open(path.join("program.json"))
+ .map_err(|err| UtilError::util_file_io_error(err, Default::default()))?;
// Read the file content
let mut content = String::new();
- file.read_to_string(&mut content).expect("Failed to read `program.json`.");
+ file.read_to_string(&mut content).map_err(|err| UtilError::util_file_io_error(err, Default::default()))?;
// Deserialize the content into Program
- let program_data: ProgramSpecification =
- serde_json::from_str(&content).expect("Failed to deserialize `program.json`.");
+ let program_data: ProgramSpecification = serde_json::from_str(&content)
+ .map_err(|err| UtilError::json_serialization_error(err, Default::default()))?;
- Self {
+ Ok(Self {
programs: program_data.dependencies,
path: path.to_path_buf(),
stubs: IndexMap::new(),
lock_file: lock_file_map,
explored: IndexSet::new(),
dependency_graph: DiGraph::new(IndexSet::new()),
- }
+ })
}
// Retrieve all dependencies for a program
- pub fn retrieve(&mut self) -> IndexMap {
+ pub fn retrieve(&mut self) -> Result, UtilError> {
let mut programs_to_retrieve = self.programs.clone();
while !programs_to_retrieve.is_empty() {
@@ -186,14 +189,14 @@ impl Retriever {
self.path.clone(),
program.name.clone(),
program.network.clone(),
- )),
+ )?),
Location::Git => panic!("Location::Git is not supported yet"),
Location::Local => panic!("Location::Local is not supported yet"),
}
// Mark as visited
if !self.explored.insert(program.clone()) {
- panic!("Should not ever explore same dependency twice.")
+ Err(UtilError::circular_dependency_error(Default::default()))?;
}
}
@@ -209,11 +212,7 @@ impl Retriever {
// Add stub to list of stubs
if let Some(existing) = self.stubs.insert(stub.stub_id.name.name, stub.clone()) {
- panic!(
- "Should never be creating two stubs from the same program name. Existing: {:?}, New: {:?}",
- existing,
- stub.clone()
- )
+ Err(UtilError::duplicate_dependency_name_error(existing.stub_id.name.name, Default::default()))?;
}
// Update lock file
@@ -226,16 +225,16 @@ impl Retriever {
// Check for dependency cycles
match self.dependency_graph.post_order() {
Ok(_) => (),
- Err(DiGraphError::CycleDetected(cycle)) => panic!("Dependency cycle detected: {:?}", cycle),
+ Err(DiGraphError::CycleDetected(_)) => Err(UtilError::circular_dependency_error(Default::default()))?,
}
// Write the finalized dependency information to `leo.lock`
- self.write_lock_file();
- self.stubs.clone()
+ self.write_lock_file()?;
+ Ok(self.stubs.clone())
}
// Write lock file
- fn write_lock_file(&self) {
+ fn write_lock_file(&self) -> Result<(), UtilError> {
// Create struct representation of lock file
let mut lock_file: IndexMap> = IndexMap::new();
let packages: Vec = self
@@ -252,43 +251,55 @@ impl Retriever {
lock_file.insert("package".to_string(), packages);
// Serialize the data to a TOML string
- let toml_str = toml::to_string(&lock_file).expect("Failed to serialize lock file.");
+ let toml_str =
+ toml::to_string(&lock_file).map_err(|err| UtilError::toml_serizalization_error(err, Default::default()))?;
// Write the TOML string to a file
- std::fs::write(self.path.join("leo.lock"), toml_str).expect("Failed to write file to leo.lock");
+ std::fs::write(self.path.join("leo.lock"), toml_str)
+ .map_err(|err| UtilError::util_file_io_error(err, Default::default()))?;
+ Ok(())
}
}
// Retrieve from network
-fn retrieve_from_network(project_path: PathBuf, name: String, network: Network) -> (Stub, Program, LockContents) {
+fn retrieve_from_network(
+ project_path: PathBuf,
+ name: String,
+ network: Network,
+) -> Result<(Stub, Program, LockContents), UtilError> {
// Check if the file is already cached in `~/.aleo/registry/{network}/{program}`
- let path_str = &format!("{}/{}/{}", ALEO_REGISTRY_DIRECTORY, network, name);
+ let registry_directory = &format!("{}/.aleo/registry/{}", env::var("HOME").unwrap(), network);
+ let path_str = &format!("{}/{}", registry_directory, name);
let path = Path::new(&path_str);
+ dbg!(path);
let mut file_str: String;
if !path.exists() {
// Create directories along the way if they don't exist
- std::fs::create_dir_all(Path::new(&format!("{}/{}", ALEO_REGISTRY_DIRECTORY, network)))
- .expect("Failed to create directory `~/.aleo/registry/{network}`.");
+ std::fs::create_dir_all(Path::new(®istry_directory))
+ .map_err(|err| UtilError::util_file_io_error(err, Default::default()))?;
+ // TODO: Refactor this so that we do the match statement here (instead of in `Retriever::retrieve()`)
// Fetch from network
println!("Retrieving {} from {:?}.", name.clone(), network.clone());
- file_str = fetch_from_network(name.clone(), network.clone());
+ file_str = fetch_from_network(name.clone(), network.clone())?;
file_str = file_str.replace("\\n", "\n").replace('\"', "");
println!("Successfully retrieved {} from {:?}!", name, network);
// Write file to cache
- std::fs::write(path, file_str.clone().replace("\\n", "\n")).expect("Failed to write file to ~/.aleo");
+ std::fs::write(path, file_str.clone().replace("\\n", "\n"))
+ .map_err(|err| UtilError::util_file_io_error(err, Default::default()))?;
} else {
// Read file from cache
- file_str = fs::read_to_string(path).expect("Failed to read file.");
+ file_str = fs::read_to_string(path).map_err(|err| UtilError::util_file_io_error(err, Default::default()))?;
}
// Copy the file into build directory. We can assume build directory exists because of its initialization in `leo/cli/commands/build.rs`.
let import_dir = project_path.join("build/imports");
let import_dir_path = import_dir.as_path();
- std::fs::create_dir_all(import_dir_path).expect("Failed to create directory `~/.aleo/registry/{network}`.");
+ std::fs::create_dir_all(import_dir_path).map_err(|err| UtilError::util_file_io_error(err, Default::default()))?;
let build_location = PathBuf::from(import_dir_path).join(name.clone());
- std::fs::write(build_location, file_str.clone()).expect("Failed to write file to build/imports.");
+ std::fs::write(build_location, file_str.clone())
+ .map_err(|err| UtilError::util_file_io_error(err, Default::default()))?;
// Hash the file contents
let mut hasher = Sha256::new();
@@ -296,10 +307,10 @@ fn retrieve_from_network(project_path: PathBuf, name: String, network: Network)
let hash = hasher.finalize();
// Disassemble into Stub
- let stub: Stub = disassemble_from_str(file_str);
+ let stub: Stub = disassemble_from_str(file_str)?;
// Create entry for leo.lock
- (
+ Ok((
stub.clone(),
Program { name: name.clone(), location: Location::Network, network: network.clone() },
LockContents {
@@ -315,13 +326,17 @@ fn retrieve_from_network(project_path: PathBuf, name: String, network: Network)
.collect(),
checksum: format!("{hash:x}"),
},
- )
+ ))
}
-fn fetch_from_network(program: String, network: Network) -> String {
+fn fetch_from_network(program: String, network: Network) -> Result {
let url = format!("{}/{}/program/{}", ALEO_EXPLORER_URL, network.clone(), program);
let response = ureq::get(&url.clone()).call().unwrap();
- if response.status() == 200 { response.into_string().unwrap() } else { panic!("Failed to fetch from {url}") }
+ if response.status() == 200 {
+ Ok(response.into_string().unwrap())
+ } else {
+ Err(UtilError::network_error(url, response.status(), Default::default()))
+ }
}
#[cfg(test)]
@@ -330,43 +345,20 @@ mod tests {
use leo_span::symbol::create_session_if_not_set_then;
#[test]
- fn basic_test() {
- const BUILD_DIRECTORY: &str = "../tmp/project";
- create_session_if_not_set_then(|_| {
- let build_dir = PathBuf::from(BUILD_DIRECTORY);
- let mut retriever = Retriever::new(&build_dir);
- retriever.retrieve();
- });
- }
-
- #[test]
- fn simple_test() {
- const BUILD_DIRECTORY: &str = "../tmp/simple";
- create_session_if_not_set_then(|_| {
- let build_dir = PathBuf::from(BUILD_DIRECTORY);
- let mut retriever = Retriever::new(&build_dir);
- retriever.retrieve();
- });
- }
- #[test]
- fn super_simple_test() {
- dbg!(std::env::current_dir().unwrap());
- const BUILD_DIRECTORY: &str = "../tmp/super_simple";
- create_session_if_not_set_then(|_| {
- let build_dir = PathBuf::from(BUILD_DIRECTORY);
- let mut retriever = Retriever::new(&build_dir);
- retriever.retrieve();
- });
- }
+ fn temp_dir_test() {
+ // Set $HOME to tmp directory so that tests do not modify users real home directory
+ let original_home = env::var("HOME").unwrap();
+ env::set_var("HOME", "../tmp");
- #[test]
- fn nested_test() {
- dbg!(std::env::current_dir().unwrap());
+ // Test pulling nested dependencies from network
const BUILD_DIRECTORY: &str = "../tmp/nested";
create_session_if_not_set_then(|_| {
let build_dir = PathBuf::from(BUILD_DIRECTORY);
- let mut retriever = Retriever::new(&build_dir);
- retriever.retrieve();
+ let mut retriever = Retriever::new(&build_dir).expect("Failed to build retriever");
+ retriever.retrieve().expect("failed to retrieve");
});
+
+ // Reset $HOME
+ env::set_var("HOME", original_home);
}
}
diff --git a/utils/tmp/.aleo/registry/testnet3/nested_example_layer_0.aleo b/utils/tmp/.aleo/registry/testnet3/nested_example_layer_0.aleo
new file mode 100644
index 0000000000..c1532ce30a
--- /dev/null
+++ b/utils/tmp/.aleo/registry/testnet3/nested_example_layer_0.aleo
@@ -0,0 +1,10 @@
+import nested_example_layer_2.aleo;
+import nested_example_layer_1.aleo;
+
+program nested_example_layer_0.aleo;
+
+function main:
+ input r0 as u32.public;
+ input r1 as u32.private;
+ call nested_example_layer_1.aleo/external_function r0 r1 into r2;
+ output r2 as u32.private;
diff --git a/utils/tmp/.aleo/registry/testnet3/nested_example_layer_1.aleo b/utils/tmp/.aleo/registry/testnet3/nested_example_layer_1.aleo
new file mode 100644
index 0000000000..4efaf63929
--- /dev/null
+++ b/utils/tmp/.aleo/registry/testnet3/nested_example_layer_1.aleo
@@ -0,0 +1,9 @@
+import nested_example_layer_2.aleo;
+
+program nested_example_layer_1.aleo;
+
+function external_function:
+ input r0 as u32.public;
+ input r1 as u32.private;
+ call nested_example_layer_2.aleo/external_nested_function r0 r1 into r2;
+ output r2 as u32.private;
diff --git a/utils/tmp/.aleo/registry/testnet3/nested_example_layer_2.aleo b/utils/tmp/.aleo/registry/testnet3/nested_example_layer_2.aleo
new file mode 100644
index 0000000000..459b896b67
--- /dev/null
+++ b/utils/tmp/.aleo/registry/testnet3/nested_example_layer_2.aleo
@@ -0,0 +1,7 @@
+program nested_example_layer_2.aleo;
+
+function external_nested_function:
+ input r0 as u32.public;
+ input r1 as u32.private;
+ add r0 r1 into r2;
+ output r2 as u32.private;
diff --git a/utils/tmp/.aleo/testnet3/artgo_aigc_v1_3.aleo b/utils/tmp/.aleo/testnet3/artgo_aigc_v1_3.aleo
deleted file mode 100644
index 1e8364326e..0000000000
--- a/utils/tmp/.aleo/testnet3/artgo_aigc_v1_3.aleo
+++ /dev/null
@@ -1,371 +0,0 @@
-import credits.aleo;
-
-program artgo_aigc_v1_3.aleo;
-
-struct Field2:
- first as field;
- second as field;
-
-struct NftHash:
- minter as address;
- prompt as Field2;
- nonce as field;
-
-struct NftInfo:
- holder as address;
- minter as address;
- hash as field;
- uri as Field2;
-
-struct Order:
- holder as address;
- nft_id as field;
- order_type as u8;
- amount as u64;
- status as u8;
- deadline as field;
-
-struct Bid:
- bidder as address;
- nft_id as field;
- amount as u64;
-
-record BidRecord:
- owner as address.private;
- bid_type as u8.private;
- bidder as address.private;
- nft_id as field.private;
- amount as u64.private;
-
-record Nft:
- owner as address.private;
- minter as address.private;
- prompt as Field2.private;
- nonce as field.private;
- uri as Field2.private;
-
-mapping nfts:
- key as field.public;
- value as NftInfo.public;
-
-mapping tokenId:
- key as boolean.public;
- value as field.public;
-
-mapping admin:
- key as boolean.public;
- value as address.public;
-
-mapping fees:
- key as boolean.public;
- value as u64.public;
-
-mapping orders:
- key as field.public;
- value as Order.public;
-
-mapping bids:
- key as field.public;
- value as Bid.public;
-
-function mint_nft:
- input r0 as Field2.private;
- input r1 as Field2.public;
- input r2 as field.public;
- cast self.caller r0 r2 into r3 as NftHash;
- hash.bhp256 r3 into r4 as field;
- cast self.caller self.caller r0 r2 r1 into r5 as Nft.record;
- async mint_nft self.caller r4 r1 into r6;
- output r5 as Nft.record;
- output r6 as artgo_aigc_v1_3.aleo/mint_nft.future;
-
-finalize mint_nft:
- input r0 as address.public;
- input r1 as field.public;
- input r2 as Field2.public;
- get.or_use tokenId[true] 1field into r3;
- add r3 1field into r4;
- set r4 into tokenId[true];
- cast r0 r0 r1 r2 into r5 as NftInfo;
- set r5 into nfts[r3];
-
-function transfer_private_nft:
- input r0 as field.private;
- input r1 as Nft.record;
- input r2 as address.private;
- is.eq r1.owner self.caller into r3;
- assert.eq r3 true ;
- cast r1.minter r1.prompt r1.nonce into r4 as NftHash;
- hash.bhp256 r4 into r5 as field;
- cast r2 r1.minter r1.prompt r1.nonce r1.uri into r6 as Nft.record;
- async transfer_private_nft r0 r5 r1.uri r2 into r7;
- output r6 as Nft.record;
- output r7 as artgo_aigc_v1_3.aleo/transfer_private_nft.future;
-
-finalize transfer_private_nft:
- input r0 as field.public;
- input r1 as field.public;
- input r2 as Field2.public;
- input r3 as address.public;
- get nfts[r0] into r4;
- assert.eq r4.hash r1 ;
- assert.eq r4.uri r2 ;
- cast r3 r4.minter r4.hash r4.uri into r5 as NftInfo;
- set r5 into nfts[r0];
-
-function place_order:
- input r0 as field.public;
- input r1 as Nft.record;
- input r2 as u8.public;
- input r3 as u64.public;
- input r4 as field.public;
- input r5 as address.public;
- is.eq r2 1u8 into r6;
- assert.eq r6 true ;
- gt r3 0u64 into r7;
- lte r3 18446744073709551615u64 into r8;
- and r7 r8 into r9;
- assert.eq r9 true ;
- cast r1.minter r1.prompt r1.nonce into r10 as NftHash;
- hash.bhp256 r10 into r11 as field;
- cast self.caller r0 r2 r3 1u8 0field into r12 as Order;
- cast r5 r1.minter r1.prompt r1.nonce r1.uri into r13 as Nft.record;
- async place_order r5 r0 r11 r1.uri r12 into r14;
- output r13 as Nft.record;
- output r14 as artgo_aigc_v1_3.aleo/place_order.future;
-
-finalize place_order:
- input r0 as address.public;
- input r1 as field.public;
- input r2 as field.public;
- input r3 as Field2.public;
- input r4 as Order.public;
- contains admin[true] into r5;
- assert.eq r5 true ;
- get admin[true] into r6;
- assert.eq r6 r0 ;
- get nfts[r1] into r7;
- assert.eq r7.hash r2 ;
- assert.eq r7.uri r3 ;
- contains fees[true] into r8;
- assert.eq r8 true ;
- get fees[true] into r9;
- gte r4.amount r9 into r10;
- assert.eq r10 true ;
- contains orders[r1] into r11;
- not r11 into r12;
- assert.eq r12 true ;
- set r4 into orders[r1];
-
-function update_order:
- input r0 as field.public;
- input r1 as u64.public;
- gt r1 0u64 into r2;
- lte r1 18446744073709551615u64 into r3;
- and r2 r3 into r4;
- assert.eq r4 true ;
- async update_order self.caller r0 r1 into r5;
- output r5 as artgo_aigc_v1_3.aleo/update_order.future;
-
-finalize update_order:
- input r0 as address.public;
- input r1 as field.public;
- input r2 as u64.public;
- get orders[r1] into r3;
- is.eq r3.status 1u8 into r4;
- assert.eq r4 true ;
- is.eq r0 r3.holder into r5;
- assert.eq r5 true ;
- contains fees[true] into r6;
- assert.eq r6 true ;
- get fees[true] into r7;
- gte r2 r7 into r8;
- assert.eq r8 true ;
- cast r3.holder r3.nft_id r3.order_type r2 r3.status r3.deadline into r9 as Order;
- set r9 into orders[r1];
-
-function cancel_order:
- input r0 as u64.public;
- input r1 as field.public;
- input r2 as address.public;
- cast r2 2u8 self.caller r1 0u64 into r3 as BidRecord.record;
- call credits.aleo/transfer_public r2 r0 into r4;
- async cancel_order r4 self.caller r1 r0 r2 into r5;
- output r3 as BidRecord.record;
- output r5 as artgo_aigc_v1_3.aleo/cancel_order.future;
-
-finalize cancel_order:
- input r0 as credits.aleo/transfer_public.future;
- input r1 as address.public;
- input r2 as field.public;
- input r3 as u64.public;
- input r4 as address.public;
- await r0;
- contains fees[true] into r5;
- assert.eq r5 true ;
- get fees[true] into r6;
- assert.eq r6 r3 ;
- get orders[r2] into r7;
- is.eq r7.status 1u8 into r8;
- assert.eq r8 true ;
- is.eq r1 r7.holder into r9;
- assert.eq r9 true ;
- contains admin[true] into r10;
- assert.eq r10 true ;
- get admin[true] into r11;
- assert.eq r11 r4 ;
- cast r7.holder r7.nft_id r7.order_type r7.amount 2u8 r7.deadline into r12 as Order;
- set r12 into orders[r2];
-
-function handle_cancel_order:
- input r0 as field.public;
- input r1 as Nft.record;
- input r2 as address.public;
- cast r2 r1.minter r1.prompt r1.nonce r1.uri into r3 as Nft.record;
- cast r1.minter r1.prompt r1.nonce into r4 as NftHash;
- hash.bhp256 r4 into r5 as field;
- async handle_cancel_order r0 r5 r1.uri r2 self.caller into r6;
- output r3 as Nft.record;
- output r6 as artgo_aigc_v1_3.aleo/handle_cancel_order.future;
-
-finalize handle_cancel_order:
- input r0 as field.public;
- input r1 as field.public;
- input r2 as Field2.public;
- input r3 as address.public;
- input r4 as address.public;
- contains admin[true] into r5;
- assert.eq r5 true ;
- get admin[true] into r6;
- assert.eq r6 r4 ;
- get nfts[r0] into r7;
- assert.eq r7.hash r1 ;
- assert.eq r7.uri r2 ;
- get orders[r0] into r8;
- is.eq r8.status 2u8 into r9;
- assert.eq r9 true ;
- is.eq r3 r8.holder into r10;
- assert.eq r10 true ;
- remove bids[r0];
- remove orders[r0];
-
-function bid_order:
- input r0 as field.public;
- input r1 as u64.public;
- input r2 as address.public;
- gt r1 0u64 into r3;
- lte r1 18446744073709551615u64 into r4;
- and r3 r4 into r5;
- assert.eq r5 true ;
- cast r2 1u8 self.caller r0 r1 into r6 as BidRecord.record;
- call credits.aleo/transfer_public r2 r1 into r7;
- async bid_order r7 self.caller r0 r1 r2 into r8;
- output r6 as BidRecord.record;
- output r8 as artgo_aigc_v1_3.aleo/bid_order.future;
-
-finalize bid_order:
- input r0 as credits.aleo/transfer_public.future;
- input r1 as address.public;
- input r2 as field.public;
- input r3 as u64.public;
- input r4 as address.public;
- await r0;
- contains admin[true] into r5;
- assert.eq r5 true ;
- get admin[true] into r6;
- assert.eq r6 r4 ;
- cast r1 r2 r3 into r7 as Bid;
- set r7 into bids[r2];
- contains orders[r2] into r8;
- assert.eq r8 true ;
- get orders[r2] into r9;
- is.eq r9.status 1u8 into r10;
- assert.eq r10 true ;
- gte r3 r9.amount into r11;
- assert.eq r11 true ;
- cast r9.holder r9.nft_id r9.order_type r9.amount 3u8 0field into r12 as Order;
- set r12 into orders[r2];
-
-function finish_order:
- input r0 as field.public;
- input r1 as Nft.record;
- input r2 as address.public;
- input r3 as u64.public;
- input r4 as address.public;
- input r5 as u64.public;
- input r6 as address.public;
- gte r5 r3 into r7;
- lte r5 18446744073709551615u64 into r8;
- and r7 r8 into r9;
- assert.eq r9 true ;
- assert.eq self.caller r6 ;
- sub r5 r3 into r10;
- call credits.aleo/transfer_public r2 r10 into r11;
- cast r1.minter r1.prompt r1.nonce into r12 as NftHash;
- hash.bhp256 r12 into r13 as field;
- cast r4 r1.minter r1.prompt r1.nonce r1.uri into r14 as Nft.record;
- async finish_order r11 r0 r2 r13 r1.uri r4 r5 r3 r6 into r15;
- output r14 as Nft.record;
- output r15 as artgo_aigc_v1_3.aleo/finish_order.future;
-
-finalize finish_order:
- input r0 as credits.aleo/transfer_public.future;
- input r1 as field.public;
- input r2 as address.public;
- input r3 as field.public;
- input r4 as Field2.public;
- input r5 as address.public;
- input r6 as u64.public;
- input r7 as u64.public;
- input r8 as address.public;
- await r0;
- contains admin[true] into r9;
- assert.eq r9 true ;
- get admin[true] into r10;
- assert.eq r10 r8 ;
- contains fees[true] into r11;
- assert.eq r11 true ;
- get fees[true] into r12;
- assert.eq r12 r7 ;
- contains orders[r1] into r13;
- assert.eq r13 true ;
- get orders[r1] into r14;
- assert.eq r14.status 3u8 ;
- get nfts[r1] into r15;
- assert.eq r15.hash r3 ;
- assert.eq r15.uri r4 ;
- assert.eq r15.holder r2 ;
- contains bids[r1] into r16;
- assert.eq r16 true ;
- get bids[r1] into r17;
- assert.eq r17.bidder r5 ;
- is.eq r17.amount r6 into r18;
- assert.eq r18 true ;
- cast r5 r15.minter r15.hash r15.uri into r19 as NftInfo;
- set r19 into nfts[r1];
- remove bids[r1];
- remove orders[r1];
-
-function set_admin:
- input r0 as address.private;
- async set_admin self.caller r0 into r1;
- output r1 as artgo_aigc_v1_3.aleo/set_admin.future;
-
-finalize set_admin:
- input r0 as address.public;
- input r1 as address.public;
- get.or_use admin[true] aleo12n3kz2wzrljvhp9zkn9zety54wz8mlmlakzzkrs6znaz028wjczqpe8x3j into r2;
- assert.eq r2 r0 ;
- set r1 into admin[true];
-
-function set_fee:
- input r0 as u64.private;
- async set_fee self.caller r0 into r1;
- output r1 as artgo_aigc_v1_3.aleo/set_fee.future;
-
-finalize set_fee:
- input r0 as address.public;
- input r1 as u64.public;
- get admin[true] into r2;
- assert.eq r0 r2 ;
- set r1 into fees[true];
diff --git a/utils/tmp/.aleo/testnet3/credits.aleo b/utils/tmp/.aleo/testnet3/credits.aleo
deleted file mode 100644
index bdb2115699..0000000000
--- a/utils/tmp/.aleo/testnet3/credits.aleo
+++ /dev/null
@@ -1,312 +0,0 @@
-program credits.aleo;
-
-mapping committee:
- key as address.public;
- value as committee_state.public;
-
-struct committee_state:
- microcredits as u64;
- is_open as boolean;
-
-mapping bonded:
- key as address.public;
- value as bond_state.public;
-
-struct bond_state:
- validator as address;
- microcredits as u64;
-
-mapping unbonding:
- key as address.public;
- value as unbond_state.public;
-
-struct unbond_state:
- microcredits as u64;
- height as u32;
-
-mapping account:
- key as address.public;
- value as u64.public;
-
-record credits:
- owner as address.private;
- microcredits as u64.private;
-
-function bond_public:
- input r0 as address.public;
- input r1 as u64.public;
- gte r1 1000000u64 into r2;
- assert.eq r2 true ;
- async bond_public self.caller r0 r1 into r3;
- output r3 as credits.aleo/bond_public.future;
-
-finalize bond_public:
- input r0 as address.public;
- input r1 as address.public;
- input r2 as u64.public;
- is.eq r0 r1 into r3;
- branch.eq r3 true to bond_validator;
- branch.eq r3 false to bond_delegator;
- position bond_validator;
- cast 0u64 true into r4 as committee_state;
- get.or_use committee[r0] r4 into r5;
- assert.eq r5.is_open true ;
- add r5.microcredits r2 into r6;
- cast r6 r5.is_open into r7 as committee_state;
- cast r1 0u64 into r8 as bond_state;
- get.or_use bonded[r0] r8 into r9;
- assert.eq r9.validator r1 ;
- add r9.microcredits r2 into r10;
- gte r10 1000000000000u64 into r11;
- assert.eq r11 true ;
- cast r1 r10 into r12 as bond_state;
- get account[r0] into r13;
- sub r13 r2 into r14;
- set r7 into committee[r0];
- set r12 into bonded[r0];
- set r14 into account[r0];
- branch.eq true true to end;
- position bond_delegator;
- contains committee[r0] into r15;
- assert.eq r15 false ;
- get committee[r1] into r16;
- assert.eq r16.is_open true ;
- add r16.microcredits r2 into r17;
- cast r17 r16.is_open into r18 as committee_state;
- cast r1 0u64 into r19 as bond_state;
- get.or_use bonded[r0] r19 into r20;
- assert.eq r20.validator r1 ;
- add r20.microcredits r2 into r21;
- gte r21 10000000u64 into r22;
- assert.eq r22 true ;
- cast r1 r21 into r23 as bond_state;
- get account[r0] into r24;
- sub r24 r2 into r25;
- set r18 into committee[r1];
- set r23 into bonded[r0];
- set r25 into account[r0];
- position end;
-
-function unbond_public:
- input r0 as u64.public;
- async unbond_public self.caller r0 into r1;
- output r1 as credits.aleo/unbond_public.future;
-
-finalize unbond_public:
- input r0 as address.public;
- input r1 as u64.public;
- cast 0u64 0u32 into r2 as unbond_state;
- get.or_use unbonding[r0] r2 into r3;
- add block.height 360u32 into r4;
- contains committee[r0] into r5;
- branch.eq r5 true to unbond_validator;
- branch.eq r5 false to unbond_delegator;
- position unbond_validator;
- get committee[r0] into r6;
- sub r6.microcredits r1 into r7;
- get bonded[r0] into r8;
- assert.eq r8.validator r0 ;
- sub r8.microcredits r1 into r9;
- gte r9 1000000000000u64 into r10;
- branch.eq r10 true to decrement_validator;
- branch.eq r10 false to remove_validator;
- position decrement_validator;
- cast r7 r6.is_open into r11 as committee_state;
- set r11 into committee[r0];
- cast r0 r9 into r12 as bond_state;
- set r12 into bonded[r0];
- add r3.microcredits r1 into r13;
- cast r13 r4 into r14 as unbond_state;
- set r14 into unbonding[r0];
- branch.eq true true to end;
- position remove_validator;
- assert.eq r6.microcredits r8.microcredits ;
- remove committee[r0];
- remove bonded[r0];
- add r3.microcredits r8.microcredits into r15;
- cast r15 r4 into r16 as unbond_state;
- set r16 into unbonding[r0];
- branch.eq true true to end;
- position unbond_delegator;
- get bonded[r0] into r17;
- sub r17.microcredits r1 into r18;
- gte r18 10000000u64 into r19;
- branch.eq r19 true to decrement_delegator;
- branch.eq r19 false to remove_delegator;
- position decrement_delegator;
- get committee[r17.validator] into r20;
- sub r20.microcredits r1 into r21;
- cast r21 r20.is_open into r22 as committee_state;
- set r22 into committee[r17.validator];
- cast r17.validator r18 into r23 as bond_state;
- set r23 into bonded[r0];
- add r3.microcredits r1 into r24;
- cast r24 r4 into r25 as unbond_state;
- set r25 into unbonding[r0];
- branch.eq true true to end;
- position remove_delegator;
- get committee[r17.validator] into r26;
- sub r26.microcredits r17.microcredits into r27;
- cast r27 r26.is_open into r28 as committee_state;
- set r28 into committee[r17.validator];
- remove bonded[r0];
- add r3.microcredits r17.microcredits into r29;
- cast r29 r4 into r30 as unbond_state;
- set r30 into unbonding[r0];
- position end;
-
-function unbond_delegator_as_validator:
- input r0 as address.public;
- async unbond_delegator_as_validator self.caller r0 into r1;
- output r1 as credits.aleo/unbond_delegator_as_validator.future;
-
-finalize unbond_delegator_as_validator:
- input r0 as address.public;
- input r1 as address.public;
- get committee[r0] into r2;
- assert.eq r2.is_open false ;
- contains committee[r1] into r3;
- assert.eq r3 false ;
- get bonded[r1] into r4;
- assert.eq r4.validator r0 ;
- sub r2.microcredits r4.microcredits into r5;
- cast r5 r2.is_open into r6 as committee_state;
- cast 0u64 0u32 into r7 as unbond_state;
- get.or_use unbonding[r1] r7 into r8;
- add r8.microcredits r4.microcredits into r9;
- add block.height 360u32 into r10;
- cast r9 r10 into r11 as unbond_state;
- set r6 into committee[r0];
- remove bonded[r1];
- set r11 into unbonding[r1];
-
-function claim_unbond_public:
- async claim_unbond_public self.caller into r0;
- output r0 as credits.aleo/claim_unbond_public.future;
-
-finalize claim_unbond_public:
- input r0 as address.public;
- get unbonding[r0] into r1;
- gte block.height r1.height into r2;
- assert.eq r2 true ;
- get.or_use account[r0] 0u64 into r3;
- add r1.microcredits r3 into r4;
- set r4 into account[r0];
- remove unbonding[r0];
-
-function set_validator_state:
- input r0 as boolean.public;
- async set_validator_state self.caller r0 into r1;
- output r1 as credits.aleo/set_validator_state.future;
-
-finalize set_validator_state:
- input r0 as address.public;
- input r1 as boolean.public;
- get committee[r0] into r2;
- cast r2.microcredits r1 into r3 as committee_state;
- set r3 into committee[r0];
-
-function transfer_public:
- input r0 as address.public;
- input r1 as u64.public;
- async transfer_public self.caller r0 r1 into r2;
- output r2 as credits.aleo/transfer_public.future;
-
-finalize transfer_public:
- input r0 as address.public;
- input r1 as address.public;
- input r2 as u64.public;
- get account[r0] into r3;
- sub r3 r2 into r4;
- set r4 into account[r0];
- get.or_use account[r1] 0u64 into r5;
- add r5 r2 into r6;
- set r6 into account[r1];
-
-function transfer_private:
- input r0 as credits.record;
- input r1 as address.private;
- input r2 as u64.private;
- sub r0.microcredits r2 into r3;
- cast r1 r2 into r4 as credits.record;
- cast r0.owner r3 into r5 as credits.record;
- output r4 as credits.record;
- output r5 as credits.record;
-
-function transfer_private_to_public:
- input r0 as credits.record;
- input r1 as address.public;
- input r2 as u64.public;
- sub r0.microcredits r2 into r3;
- cast r0.owner r3 into r4 as credits.record;
- async transfer_private_to_public r1 r2 into r5;
- output r4 as credits.record;
- output r5 as credits.aleo/transfer_private_to_public.future;
-
-finalize transfer_private_to_public:
- input r0 as address.public;
- input r1 as u64.public;
- get.or_use account[r0] 0u64 into r2;
- add r1 r2 into r3;
- set r3 into account[r0];
-
-function transfer_public_to_private:
- input r0 as address.private;
- input r1 as u64.public;
- cast r0 r1 into r2 as credits.record;
- async transfer_public_to_private self.caller r1 into r3;
- output r2 as credits.record;
- output r3 as credits.aleo/transfer_public_to_private.future;
-
-finalize transfer_public_to_private:
- input r0 as address.public;
- input r1 as u64.public;
- get account[r0] into r2;
- sub r2 r1 into r3;
- set r3 into account[r0];
-
-function join:
- input r0 as credits.record;
- input r1 as credits.record;
- add r0.microcredits r1.microcredits into r2;
- cast r0.owner r2 into r3 as credits.record;
- output r3 as credits.record;
-
-function split:
- input r0 as credits.record;
- input r1 as u64.private;
- sub r0.microcredits r1 into r2;
- sub r2 10000u64 into r3;
- cast r0.owner r1 into r4 as credits.record;
- cast r0.owner r3 into r5 as credits.record;
- output r4 as credits.record;
- output r5 as credits.record;
-
-function fee_private:
- input r0 as credits.record;
- input r1 as u64.public;
- input r2 as u64.public;
- input r3 as field.public;
- assert.neq r1 0u64 ;
- assert.neq r3 0field ;
- add r1 r2 into r4;
- sub r0.microcredits r4 into r5;
- cast r0.owner r5 into r6 as credits.record;
- output r6 as credits.record;
-
-function fee_public:
- input r0 as u64.public;
- input r1 as u64.public;
- input r2 as field.public;
- assert.neq r0 0u64 ;
- assert.neq r2 0field ;
- add r0 r1 into r3;
- async fee_public self.caller r3 into r4;
- output r4 as credits.aleo/fee_public.future;
-
-finalize fee_public:
- input r0 as address.public;
- input r1 as u64.public;
- get account[r0] into r2;
- sub r2 r1 into r3;
- set r3 into account[r0];
diff --git a/utils/tmp/.aleo/testnet3/distrofund_private_transfer.aleo b/utils/tmp/.aleo/testnet3/distrofund_private_transfer.aleo
deleted file mode 100644
index 22e1c99132..0000000000
--- a/utils/tmp/.aleo/testnet3/distrofund_private_transfer.aleo
+++ /dev/null
@@ -1,633 +0,0 @@
-import credits.aleo;
-
-program distrofund_private_transfer.aleo;
-
-struct Addresses1:
- address1 as address;
-
-struct Addresses2:
- address1 as address;
- address2 as address;
-
-struct Addresses3:
- address1 as address;
- address2 as address;
- address3 as address;
-
-struct Addresses4:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
-
-struct Addresses5:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
-
-struct Addresses6:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
-
-struct Addresses7:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
-
-struct Addresses8:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
- address8 as address;
-
-struct Addresses9:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
- address8 as address;
- address9 as address;
-
-struct Addresses10:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
- address8 as address;
- address9 as address;
- address10 as address;
-
-struct Addresses11:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
- address8 as address;
- address9 as address;
- address10 as address;
- address11 as address;
-
-struct Addresses12:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
- address8 as address;
- address9 as address;
- address10 as address;
- address11 as address;
- address12 as address;
-
-struct Addresses13:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
- address8 as address;
- address9 as address;
- address10 as address;
- address11 as address;
- address12 as address;
- address13 as address;
-
-struct Addresses14:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
- address8 as address;
- address9 as address;
- address10 as address;
- address11 as address;
- address12 as address;
- address13 as address;
- address14 as address;
-
-struct Addresses15:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
- address8 as address;
- address9 as address;
- address10 as address;
- address11 as address;
- address12 as address;
- address13 as address;
- address14 as address;
- address15 as address;
-
-struct Amount1:
- amount1 as u64;
-
-struct Amount2:
- amount1 as u64;
- amount2 as u64;
-
-struct Amount3:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
-
-struct Amount4:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
-
-struct Amount5:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
-
-struct Amount6:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
-
-struct Amount7:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
-
-struct Amount8:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
- amount8 as u64;
-
-struct Amount9:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
- amount8 as u64;
- amount9 as u64;
-
-struct Amount10:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
- amount8 as u64;
- amount9 as u64;
- amount10 as u64;
-
-struct Amount11:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
- amount8 as u64;
- amount9 as u64;
- amount10 as u64;
- amount11 as u64;
-
-struct Amount12:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
- amount8 as u64;
- amount9 as u64;
- amount10 as u64;
- amount11 as u64;
- amount12 as u64;
-
-struct Amount13:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
- amount8 as u64;
- amount9 as u64;
- amount10 as u64;
- amount11 as u64;
- amount12 as u64;
- amount13 as u64;
-
-struct Amount14:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
- amount8 as u64;
- amount9 as u64;
- amount10 as u64;
- amount11 as u64;
- amount12 as u64;
- amount13 as u64;
- amount14 as u64;
-
-struct Amount15:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
- amount8 as u64;
- amount9 as u64;
- amount10 as u64;
- amount11 as u64;
- amount12 as u64;
- amount13 as u64;
- amount14 as u64;
- amount15 as u64;
-
-function transfer_one:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses1.public;
- input r2 as Amount1.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- output r4 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
-
-function transfer_two:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses2.public;
- input r2 as Amount2.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- output r6 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
-
-function transfer_three:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses3.public;
- input r2 as Amount3.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- output r8 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
-
-function transfer_four:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses4.public;
- input r2 as Amount4.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- output r10 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
-
-function transfer_five:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses5.public;
- input r2 as Amount5.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- output r12 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
-
-function transfer_six:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses6.public;
- input r2 as Amount6.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- output r14 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
-
-function transfer_seven:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses7.public;
- input r2 as Amount7.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- output r16 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
-
-function transfer_eight:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses8.public;
- input r2 as Amount8.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- call credits.aleo/transfer_private r16 r1.address8 r2.amount8 into r17 r18;
- output r18 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
- output r17 as credits.aleo/credits.record;
-
-function transfer_nine:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses9.public;
- input r2 as Amount9.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- call credits.aleo/transfer_private r16 r1.address8 r2.amount8 into r17 r18;
- call credits.aleo/transfer_private r18 r1.address9 r2.amount9 into r19 r20;
- output r20 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
- output r17 as credits.aleo/credits.record;
- output r19 as credits.aleo/credits.record;
-
-function transfer_ten:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses10.public;
- input r2 as Amount10.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- call credits.aleo/transfer_private r16 r1.address8 r2.amount8 into r17 r18;
- call credits.aleo/transfer_private r18 r1.address9 r2.amount9 into r19 r20;
- call credits.aleo/transfer_private r20 r1.address10 r2.amount10 into r21 r22;
- output r22 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
- output r17 as credits.aleo/credits.record;
- output r19 as credits.aleo/credits.record;
- output r21 as credits.aleo/credits.record;
-
-function transfer_eleven:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses11.public;
- input r2 as Amount11.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- call credits.aleo/transfer_private r16 r1.address8 r2.amount8 into r17 r18;
- call credits.aleo/transfer_private r18 r1.address9 r2.amount9 into r19 r20;
- call credits.aleo/transfer_private r20 r1.address10 r2.amount10 into r21 r22;
- call credits.aleo/transfer_private r22 r1.address11 r2.amount11 into r23 r24;
- output r24 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
- output r17 as credits.aleo/credits.record;
- output r19 as credits.aleo/credits.record;
- output r21 as credits.aleo/credits.record;
- output r23 as credits.aleo/credits.record;
-
-function transfer_twelve:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses12.public;
- input r2 as Amount12.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- call credits.aleo/transfer_private r16 r1.address8 r2.amount8 into r17 r18;
- call credits.aleo/transfer_private r18 r1.address9 r2.amount9 into r19 r20;
- call credits.aleo/transfer_private r20 r1.address10 r2.amount10 into r21 r22;
- call credits.aleo/transfer_private r22 r1.address11 r2.amount11 into r23 r24;
- call credits.aleo/transfer_private r24 r1.address12 r2.amount12 into r25 r26;
- output r26 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
- output r17 as credits.aleo/credits.record;
- output r19 as credits.aleo/credits.record;
- output r21 as credits.aleo/credits.record;
- output r23 as credits.aleo/credits.record;
- output r25 as credits.aleo/credits.record;
-
-function transfer_thirteen:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses13.public;
- input r2 as Amount13.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- call credits.aleo/transfer_private r16 r1.address8 r2.amount8 into r17 r18;
- call credits.aleo/transfer_private r18 r1.address9 r2.amount9 into r19 r20;
- call credits.aleo/transfer_private r20 r1.address10 r2.amount10 into r21 r22;
- call credits.aleo/transfer_private r22 r1.address11 r2.amount11 into r23 r24;
- call credits.aleo/transfer_private r24 r1.address12 r2.amount12 into r25 r26;
- call credits.aleo/transfer_private r26 r1.address13 r2.amount13 into r27 r28;
- output r28 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
- output r17 as credits.aleo/credits.record;
- output r19 as credits.aleo/credits.record;
- output r21 as credits.aleo/credits.record;
- output r23 as credits.aleo/credits.record;
- output r25 as credits.aleo/credits.record;
- output r27 as credits.aleo/credits.record;
-
-function transfer_fourteen:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses14.public;
- input r2 as Amount14.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- call credits.aleo/transfer_private r16 r1.address8 r2.amount8 into r17 r18;
- call credits.aleo/transfer_private r18 r1.address9 r2.amount9 into r19 r20;
- call credits.aleo/transfer_private r20 r1.address10 r2.amount10 into r21 r22;
- call credits.aleo/transfer_private r22 r1.address11 r2.amount11 into r23 r24;
- call credits.aleo/transfer_private r24 r1.address12 r2.amount12 into r25 r26;
- call credits.aleo/transfer_private r26 r1.address13 r2.amount13 into r27 r28;
- call credits.aleo/transfer_private r28 r1.address14 r2.amount14 into r29 r30;
- output r30 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
- output r17 as credits.aleo/credits.record;
- output r19 as credits.aleo/credits.record;
- output r21 as credits.aleo/credits.record;
- output r23 as credits.aleo/credits.record;
- output r25 as credits.aleo/credits.record;
- output r27 as credits.aleo/credits.record;
- output r29 as credits.aleo/credits.record;
-
-function transfer_fifteen:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses15.public;
- input r2 as Amount15.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- call credits.aleo/transfer_private r16 r1.address8 r2.amount8 into r17 r18;
- call credits.aleo/transfer_private r18 r1.address9 r2.amount9 into r19 r20;
- call credits.aleo/transfer_private r20 r1.address10 r2.amount10 into r21 r22;
- call credits.aleo/transfer_private r22 r1.address11 r2.amount11 into r23 r24;
- call credits.aleo/transfer_private r24 r1.address12 r2.amount12 into r25 r26;
- call credits.aleo/transfer_private r26 r1.address13 r2.amount13 into r27 r28;
- call credits.aleo/transfer_private r28 r1.address14 r2.amount14 into r29 r30;
- call credits.aleo/transfer_private r30 r1.address15 r2.amount15 into r31 r32;
- output r32 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
- output r17 as credits.aleo/credits.record;
- output r19 as credits.aleo/credits.record;
- output r21 as credits.aleo/credits.record;
- output r23 as credits.aleo/credits.record;
- output r25 as credits.aleo/credits.record;
- output r27 as credits.aleo/credits.record;
- output r29 as credits.aleo/credits.record;
- output r31 as credits.aleo/credits.record;
diff --git a/utils/tmp/project/build/imports/artgo_aigc_v1_3.aleo b/utils/tmp/project/build/imports/artgo_aigc_v1_3.aleo
deleted file mode 100644
index 1e8364326e..0000000000
--- a/utils/tmp/project/build/imports/artgo_aigc_v1_3.aleo
+++ /dev/null
@@ -1,371 +0,0 @@
-import credits.aleo;
-
-program artgo_aigc_v1_3.aleo;
-
-struct Field2:
- first as field;
- second as field;
-
-struct NftHash:
- minter as address;
- prompt as Field2;
- nonce as field;
-
-struct NftInfo:
- holder as address;
- minter as address;
- hash as field;
- uri as Field2;
-
-struct Order:
- holder as address;
- nft_id as field;
- order_type as u8;
- amount as u64;
- status as u8;
- deadline as field;
-
-struct Bid:
- bidder as address;
- nft_id as field;
- amount as u64;
-
-record BidRecord:
- owner as address.private;
- bid_type as u8.private;
- bidder as address.private;
- nft_id as field.private;
- amount as u64.private;
-
-record Nft:
- owner as address.private;
- minter as address.private;
- prompt as Field2.private;
- nonce as field.private;
- uri as Field2.private;
-
-mapping nfts:
- key as field.public;
- value as NftInfo.public;
-
-mapping tokenId:
- key as boolean.public;
- value as field.public;
-
-mapping admin:
- key as boolean.public;
- value as address.public;
-
-mapping fees:
- key as boolean.public;
- value as u64.public;
-
-mapping orders:
- key as field.public;
- value as Order.public;
-
-mapping bids:
- key as field.public;
- value as Bid.public;
-
-function mint_nft:
- input r0 as Field2.private;
- input r1 as Field2.public;
- input r2 as field.public;
- cast self.caller r0 r2 into r3 as NftHash;
- hash.bhp256 r3 into r4 as field;
- cast self.caller self.caller r0 r2 r1 into r5 as Nft.record;
- async mint_nft self.caller r4 r1 into r6;
- output r5 as Nft.record;
- output r6 as artgo_aigc_v1_3.aleo/mint_nft.future;
-
-finalize mint_nft:
- input r0 as address.public;
- input r1 as field.public;
- input r2 as Field2.public;
- get.or_use tokenId[true] 1field into r3;
- add r3 1field into r4;
- set r4 into tokenId[true];
- cast r0 r0 r1 r2 into r5 as NftInfo;
- set r5 into nfts[r3];
-
-function transfer_private_nft:
- input r0 as field.private;
- input r1 as Nft.record;
- input r2 as address.private;
- is.eq r1.owner self.caller into r3;
- assert.eq r3 true ;
- cast r1.minter r1.prompt r1.nonce into r4 as NftHash;
- hash.bhp256 r4 into r5 as field;
- cast r2 r1.minter r1.prompt r1.nonce r1.uri into r6 as Nft.record;
- async transfer_private_nft r0 r5 r1.uri r2 into r7;
- output r6 as Nft.record;
- output r7 as artgo_aigc_v1_3.aleo/transfer_private_nft.future;
-
-finalize transfer_private_nft:
- input r0 as field.public;
- input r1 as field.public;
- input r2 as Field2.public;
- input r3 as address.public;
- get nfts[r0] into r4;
- assert.eq r4.hash r1 ;
- assert.eq r4.uri r2 ;
- cast r3 r4.minter r4.hash r4.uri into r5 as NftInfo;
- set r5 into nfts[r0];
-
-function place_order:
- input r0 as field.public;
- input r1 as Nft.record;
- input r2 as u8.public;
- input r3 as u64.public;
- input r4 as field.public;
- input r5 as address.public;
- is.eq r2 1u8 into r6;
- assert.eq r6 true ;
- gt r3 0u64 into r7;
- lte r3 18446744073709551615u64 into r8;
- and r7 r8 into r9;
- assert.eq r9 true ;
- cast r1.minter r1.prompt r1.nonce into r10 as NftHash;
- hash.bhp256 r10 into r11 as field;
- cast self.caller r0 r2 r3 1u8 0field into r12 as Order;
- cast r5 r1.minter r1.prompt r1.nonce r1.uri into r13 as Nft.record;
- async place_order r5 r0 r11 r1.uri r12 into r14;
- output r13 as Nft.record;
- output r14 as artgo_aigc_v1_3.aleo/place_order.future;
-
-finalize place_order:
- input r0 as address.public;
- input r1 as field.public;
- input r2 as field.public;
- input r3 as Field2.public;
- input r4 as Order.public;
- contains admin[true] into r5;
- assert.eq r5 true ;
- get admin[true] into r6;
- assert.eq r6 r0 ;
- get nfts[r1] into r7;
- assert.eq r7.hash r2 ;
- assert.eq r7.uri r3 ;
- contains fees[true] into r8;
- assert.eq r8 true ;
- get fees[true] into r9;
- gte r4.amount r9 into r10;
- assert.eq r10 true ;
- contains orders[r1] into r11;
- not r11 into r12;
- assert.eq r12 true ;
- set r4 into orders[r1];
-
-function update_order:
- input r0 as field.public;
- input r1 as u64.public;
- gt r1 0u64 into r2;
- lte r1 18446744073709551615u64 into r3;
- and r2 r3 into r4;
- assert.eq r4 true ;
- async update_order self.caller r0 r1 into r5;
- output r5 as artgo_aigc_v1_3.aleo/update_order.future;
-
-finalize update_order:
- input r0 as address.public;
- input r1 as field.public;
- input r2 as u64.public;
- get orders[r1] into r3;
- is.eq r3.status 1u8 into r4;
- assert.eq r4 true ;
- is.eq r0 r3.holder into r5;
- assert.eq r5 true ;
- contains fees[true] into r6;
- assert.eq r6 true ;
- get fees[true] into r7;
- gte r2 r7 into r8;
- assert.eq r8 true ;
- cast r3.holder r3.nft_id r3.order_type r2 r3.status r3.deadline into r9 as Order;
- set r9 into orders[r1];
-
-function cancel_order:
- input r0 as u64.public;
- input r1 as field.public;
- input r2 as address.public;
- cast r2 2u8 self.caller r1 0u64 into r3 as BidRecord.record;
- call credits.aleo/transfer_public r2 r0 into r4;
- async cancel_order r4 self.caller r1 r0 r2 into r5;
- output r3 as BidRecord.record;
- output r5 as artgo_aigc_v1_3.aleo/cancel_order.future;
-
-finalize cancel_order:
- input r0 as credits.aleo/transfer_public.future;
- input r1 as address.public;
- input r2 as field.public;
- input r3 as u64.public;
- input r4 as address.public;
- await r0;
- contains fees[true] into r5;
- assert.eq r5 true ;
- get fees[true] into r6;
- assert.eq r6 r3 ;
- get orders[r2] into r7;
- is.eq r7.status 1u8 into r8;
- assert.eq r8 true ;
- is.eq r1 r7.holder into r9;
- assert.eq r9 true ;
- contains admin[true] into r10;
- assert.eq r10 true ;
- get admin[true] into r11;
- assert.eq r11 r4 ;
- cast r7.holder r7.nft_id r7.order_type r7.amount 2u8 r7.deadline into r12 as Order;
- set r12 into orders[r2];
-
-function handle_cancel_order:
- input r0 as field.public;
- input r1 as Nft.record;
- input r2 as address.public;
- cast r2 r1.minter r1.prompt r1.nonce r1.uri into r3 as Nft.record;
- cast r1.minter r1.prompt r1.nonce into r4 as NftHash;
- hash.bhp256 r4 into r5 as field;
- async handle_cancel_order r0 r5 r1.uri r2 self.caller into r6;
- output r3 as Nft.record;
- output r6 as artgo_aigc_v1_3.aleo/handle_cancel_order.future;
-
-finalize handle_cancel_order:
- input r0 as field.public;
- input r1 as field.public;
- input r2 as Field2.public;
- input r3 as address.public;
- input r4 as address.public;
- contains admin[true] into r5;
- assert.eq r5 true ;
- get admin[true] into r6;
- assert.eq r6 r4 ;
- get nfts[r0] into r7;
- assert.eq r7.hash r1 ;
- assert.eq r7.uri r2 ;
- get orders[r0] into r8;
- is.eq r8.status 2u8 into r9;
- assert.eq r9 true ;
- is.eq r3 r8.holder into r10;
- assert.eq r10 true ;
- remove bids[r0];
- remove orders[r0];
-
-function bid_order:
- input r0 as field.public;
- input r1 as u64.public;
- input r2 as address.public;
- gt r1 0u64 into r3;
- lte r1 18446744073709551615u64 into r4;
- and r3 r4 into r5;
- assert.eq r5 true ;
- cast r2 1u8 self.caller r0 r1 into r6 as BidRecord.record;
- call credits.aleo/transfer_public r2 r1 into r7;
- async bid_order r7 self.caller r0 r1 r2 into r8;
- output r6 as BidRecord.record;
- output r8 as artgo_aigc_v1_3.aleo/bid_order.future;
-
-finalize bid_order:
- input r0 as credits.aleo/transfer_public.future;
- input r1 as address.public;
- input r2 as field.public;
- input r3 as u64.public;
- input r4 as address.public;
- await r0;
- contains admin[true] into r5;
- assert.eq r5 true ;
- get admin[true] into r6;
- assert.eq r6 r4 ;
- cast r1 r2 r3 into r7 as Bid;
- set r7 into bids[r2];
- contains orders[r2] into r8;
- assert.eq r8 true ;
- get orders[r2] into r9;
- is.eq r9.status 1u8 into r10;
- assert.eq r10 true ;
- gte r3 r9.amount into r11;
- assert.eq r11 true ;
- cast r9.holder r9.nft_id r9.order_type r9.amount 3u8 0field into r12 as Order;
- set r12 into orders[r2];
-
-function finish_order:
- input r0 as field.public;
- input r1 as Nft.record;
- input r2 as address.public;
- input r3 as u64.public;
- input r4 as address.public;
- input r5 as u64.public;
- input r6 as address.public;
- gte r5 r3 into r7;
- lte r5 18446744073709551615u64 into r8;
- and r7 r8 into r9;
- assert.eq r9 true ;
- assert.eq self.caller r6 ;
- sub r5 r3 into r10;
- call credits.aleo/transfer_public r2 r10 into r11;
- cast r1.minter r1.prompt r1.nonce into r12 as NftHash;
- hash.bhp256 r12 into r13 as field;
- cast r4 r1.minter r1.prompt r1.nonce r1.uri into r14 as Nft.record;
- async finish_order r11 r0 r2 r13 r1.uri r4 r5 r3 r6 into r15;
- output r14 as Nft.record;
- output r15 as artgo_aigc_v1_3.aleo/finish_order.future;
-
-finalize finish_order:
- input r0 as credits.aleo/transfer_public.future;
- input r1 as field.public;
- input r2 as address.public;
- input r3 as field.public;
- input r4 as Field2.public;
- input r5 as address.public;
- input r6 as u64.public;
- input r7 as u64.public;
- input r8 as address.public;
- await r0;
- contains admin[true] into r9;
- assert.eq r9 true ;
- get admin[true] into r10;
- assert.eq r10 r8 ;
- contains fees[true] into r11;
- assert.eq r11 true ;
- get fees[true] into r12;
- assert.eq r12 r7 ;
- contains orders[r1] into r13;
- assert.eq r13 true ;
- get orders[r1] into r14;
- assert.eq r14.status 3u8 ;
- get nfts[r1] into r15;
- assert.eq r15.hash r3 ;
- assert.eq r15.uri r4 ;
- assert.eq r15.holder r2 ;
- contains bids[r1] into r16;
- assert.eq r16 true ;
- get bids[r1] into r17;
- assert.eq r17.bidder r5 ;
- is.eq r17.amount r6 into r18;
- assert.eq r18 true ;
- cast r5 r15.minter r15.hash r15.uri into r19 as NftInfo;
- set r19 into nfts[r1];
- remove bids[r1];
- remove orders[r1];
-
-function set_admin:
- input r0 as address.private;
- async set_admin self.caller r0 into r1;
- output r1 as artgo_aigc_v1_3.aleo/set_admin.future;
-
-finalize set_admin:
- input r0 as address.public;
- input r1 as address.public;
- get.or_use admin[true] aleo12n3kz2wzrljvhp9zkn9zety54wz8mlmlakzzkrs6znaz028wjczqpe8x3j into r2;
- assert.eq r2 r0 ;
- set r1 into admin[true];
-
-function set_fee:
- input r0 as u64.private;
- async set_fee self.caller r0 into r1;
- output r1 as artgo_aigc_v1_3.aleo/set_fee.future;
-
-finalize set_fee:
- input r0 as address.public;
- input r1 as u64.public;
- get admin[true] into r2;
- assert.eq r0 r2 ;
- set r1 into fees[true];
diff --git a/utils/tmp/project/build/imports/credits.aleo b/utils/tmp/project/build/imports/credits.aleo
deleted file mode 100644
index bdb2115699..0000000000
--- a/utils/tmp/project/build/imports/credits.aleo
+++ /dev/null
@@ -1,312 +0,0 @@
-program credits.aleo;
-
-mapping committee:
- key as address.public;
- value as committee_state.public;
-
-struct committee_state:
- microcredits as u64;
- is_open as boolean;
-
-mapping bonded:
- key as address.public;
- value as bond_state.public;
-
-struct bond_state:
- validator as address;
- microcredits as u64;
-
-mapping unbonding:
- key as address.public;
- value as unbond_state.public;
-
-struct unbond_state:
- microcredits as u64;
- height as u32;
-
-mapping account:
- key as address.public;
- value as u64.public;
-
-record credits:
- owner as address.private;
- microcredits as u64.private;
-
-function bond_public:
- input r0 as address.public;
- input r1 as u64.public;
- gte r1 1000000u64 into r2;
- assert.eq r2 true ;
- async bond_public self.caller r0 r1 into r3;
- output r3 as credits.aleo/bond_public.future;
-
-finalize bond_public:
- input r0 as address.public;
- input r1 as address.public;
- input r2 as u64.public;
- is.eq r0 r1 into r3;
- branch.eq r3 true to bond_validator;
- branch.eq r3 false to bond_delegator;
- position bond_validator;
- cast 0u64 true into r4 as committee_state;
- get.or_use committee[r0] r4 into r5;
- assert.eq r5.is_open true ;
- add r5.microcredits r2 into r6;
- cast r6 r5.is_open into r7 as committee_state;
- cast r1 0u64 into r8 as bond_state;
- get.or_use bonded[r0] r8 into r9;
- assert.eq r9.validator r1 ;
- add r9.microcredits r2 into r10;
- gte r10 1000000000000u64 into r11;
- assert.eq r11 true ;
- cast r1 r10 into r12 as bond_state;
- get account[r0] into r13;
- sub r13 r2 into r14;
- set r7 into committee[r0];
- set r12 into bonded[r0];
- set r14 into account[r0];
- branch.eq true true to end;
- position bond_delegator;
- contains committee[r0] into r15;
- assert.eq r15 false ;
- get committee[r1] into r16;
- assert.eq r16.is_open true ;
- add r16.microcredits r2 into r17;
- cast r17 r16.is_open into r18 as committee_state;
- cast r1 0u64 into r19 as bond_state;
- get.or_use bonded[r0] r19 into r20;
- assert.eq r20.validator r1 ;
- add r20.microcredits r2 into r21;
- gte r21 10000000u64 into r22;
- assert.eq r22 true ;
- cast r1 r21 into r23 as bond_state;
- get account[r0] into r24;
- sub r24 r2 into r25;
- set r18 into committee[r1];
- set r23 into bonded[r0];
- set r25 into account[r0];
- position end;
-
-function unbond_public:
- input r0 as u64.public;
- async unbond_public self.caller r0 into r1;
- output r1 as credits.aleo/unbond_public.future;
-
-finalize unbond_public:
- input r0 as address.public;
- input r1 as u64.public;
- cast 0u64 0u32 into r2 as unbond_state;
- get.or_use unbonding[r0] r2 into r3;
- add block.height 360u32 into r4;
- contains committee[r0] into r5;
- branch.eq r5 true to unbond_validator;
- branch.eq r5 false to unbond_delegator;
- position unbond_validator;
- get committee[r0] into r6;
- sub r6.microcredits r1 into r7;
- get bonded[r0] into r8;
- assert.eq r8.validator r0 ;
- sub r8.microcredits r1 into r9;
- gte r9 1000000000000u64 into r10;
- branch.eq r10 true to decrement_validator;
- branch.eq r10 false to remove_validator;
- position decrement_validator;
- cast r7 r6.is_open into r11 as committee_state;
- set r11 into committee[r0];
- cast r0 r9 into r12 as bond_state;
- set r12 into bonded[r0];
- add r3.microcredits r1 into r13;
- cast r13 r4 into r14 as unbond_state;
- set r14 into unbonding[r0];
- branch.eq true true to end;
- position remove_validator;
- assert.eq r6.microcredits r8.microcredits ;
- remove committee[r0];
- remove bonded[r0];
- add r3.microcredits r8.microcredits into r15;
- cast r15 r4 into r16 as unbond_state;
- set r16 into unbonding[r0];
- branch.eq true true to end;
- position unbond_delegator;
- get bonded[r0] into r17;
- sub r17.microcredits r1 into r18;
- gte r18 10000000u64 into r19;
- branch.eq r19 true to decrement_delegator;
- branch.eq r19 false to remove_delegator;
- position decrement_delegator;
- get committee[r17.validator] into r20;
- sub r20.microcredits r1 into r21;
- cast r21 r20.is_open into r22 as committee_state;
- set r22 into committee[r17.validator];
- cast r17.validator r18 into r23 as bond_state;
- set r23 into bonded[r0];
- add r3.microcredits r1 into r24;
- cast r24 r4 into r25 as unbond_state;
- set r25 into unbonding[r0];
- branch.eq true true to end;
- position remove_delegator;
- get committee[r17.validator] into r26;
- sub r26.microcredits r17.microcredits into r27;
- cast r27 r26.is_open into r28 as committee_state;
- set r28 into committee[r17.validator];
- remove bonded[r0];
- add r3.microcredits r17.microcredits into r29;
- cast r29 r4 into r30 as unbond_state;
- set r30 into unbonding[r0];
- position end;
-
-function unbond_delegator_as_validator:
- input r0 as address.public;
- async unbond_delegator_as_validator self.caller r0 into r1;
- output r1 as credits.aleo/unbond_delegator_as_validator.future;
-
-finalize unbond_delegator_as_validator:
- input r0 as address.public;
- input r1 as address.public;
- get committee[r0] into r2;
- assert.eq r2.is_open false ;
- contains committee[r1] into r3;
- assert.eq r3 false ;
- get bonded[r1] into r4;
- assert.eq r4.validator r0 ;
- sub r2.microcredits r4.microcredits into r5;
- cast r5 r2.is_open into r6 as committee_state;
- cast 0u64 0u32 into r7 as unbond_state;
- get.or_use unbonding[r1] r7 into r8;
- add r8.microcredits r4.microcredits into r9;
- add block.height 360u32 into r10;
- cast r9 r10 into r11 as unbond_state;
- set r6 into committee[r0];
- remove bonded[r1];
- set r11 into unbonding[r1];
-
-function claim_unbond_public:
- async claim_unbond_public self.caller into r0;
- output r0 as credits.aleo/claim_unbond_public.future;
-
-finalize claim_unbond_public:
- input r0 as address.public;
- get unbonding[r0] into r1;
- gte block.height r1.height into r2;
- assert.eq r2 true ;
- get.or_use account[r0] 0u64 into r3;
- add r1.microcredits r3 into r4;
- set r4 into account[r0];
- remove unbonding[r0];
-
-function set_validator_state:
- input r0 as boolean.public;
- async set_validator_state self.caller r0 into r1;
- output r1 as credits.aleo/set_validator_state.future;
-
-finalize set_validator_state:
- input r0 as address.public;
- input r1 as boolean.public;
- get committee[r0] into r2;
- cast r2.microcredits r1 into r3 as committee_state;
- set r3 into committee[r0];
-
-function transfer_public:
- input r0 as address.public;
- input r1 as u64.public;
- async transfer_public self.caller r0 r1 into r2;
- output r2 as credits.aleo/transfer_public.future;
-
-finalize transfer_public:
- input r0 as address.public;
- input r1 as address.public;
- input r2 as u64.public;
- get account[r0] into r3;
- sub r3 r2 into r4;
- set r4 into account[r0];
- get.or_use account[r1] 0u64 into r5;
- add r5 r2 into r6;
- set r6 into account[r1];
-
-function transfer_private:
- input r0 as credits.record;
- input r1 as address.private;
- input r2 as u64.private;
- sub r0.microcredits r2 into r3;
- cast r1 r2 into r4 as credits.record;
- cast r0.owner r3 into r5 as credits.record;
- output r4 as credits.record;
- output r5 as credits.record;
-
-function transfer_private_to_public:
- input r0 as credits.record;
- input r1 as address.public;
- input r2 as u64.public;
- sub r0.microcredits r2 into r3;
- cast r0.owner r3 into r4 as credits.record;
- async transfer_private_to_public r1 r2 into r5;
- output r4 as credits.record;
- output r5 as credits.aleo/transfer_private_to_public.future;
-
-finalize transfer_private_to_public:
- input r0 as address.public;
- input r1 as u64.public;
- get.or_use account[r0] 0u64 into r2;
- add r1 r2 into r3;
- set r3 into account[r0];
-
-function transfer_public_to_private:
- input r0 as address.private;
- input r1 as u64.public;
- cast r0 r1 into r2 as credits.record;
- async transfer_public_to_private self.caller r1 into r3;
- output r2 as credits.record;
- output r3 as credits.aleo/transfer_public_to_private.future;
-
-finalize transfer_public_to_private:
- input r0 as address.public;
- input r1 as u64.public;
- get account[r0] into r2;
- sub r2 r1 into r3;
- set r3 into account[r0];
-
-function join:
- input r0 as credits.record;
- input r1 as credits.record;
- add r0.microcredits r1.microcredits into r2;
- cast r0.owner r2 into r3 as credits.record;
- output r3 as credits.record;
-
-function split:
- input r0 as credits.record;
- input r1 as u64.private;
- sub r0.microcredits r1 into r2;
- sub r2 10000u64 into r3;
- cast r0.owner r1 into r4 as credits.record;
- cast r0.owner r3 into r5 as credits.record;
- output r4 as credits.record;
- output r5 as credits.record;
-
-function fee_private:
- input r0 as credits.record;
- input r1 as u64.public;
- input r2 as u64.public;
- input r3 as field.public;
- assert.neq r1 0u64 ;
- assert.neq r3 0field ;
- add r1 r2 into r4;
- sub r0.microcredits r4 into r5;
- cast r0.owner r5 into r6 as credits.record;
- output r6 as credits.record;
-
-function fee_public:
- input r0 as u64.public;
- input r1 as u64.public;
- input r2 as field.public;
- assert.neq r0 0u64 ;
- assert.neq r2 0field ;
- add r0 r1 into r3;
- async fee_public self.caller r3 into r4;
- output r4 as credits.aleo/fee_public.future;
-
-finalize fee_public:
- input r0 as address.public;
- input r1 as u64.public;
- get account[r0] into r2;
- sub r2 r1 into r3;
- set r3 into account[r0];
diff --git a/utils/tmp/project/leo.lock b/utils/tmp/project/leo.lock
deleted file mode 100644
index fa3e934700..0000000000
--- a/utils/tmp/project/leo.lock
+++ /dev/null
@@ -1,20 +0,0 @@
-[[package]]
-name = "distrofund_private_transfer.aleo"
-network = "testnet3"
-location = "network"
-checksum = "5885825ba7350bb57c70baa44730545eb57757fade520217516ace98c9a6c6e4"
-dependencies = ["credits.aleo"]
-
-[[package]]
-name = "credits.aleo"
-network = "testnet3"
-location = "network"
-checksum = "2ac86d83bca4fbf2c021660875ea1e5b4e65c7a192d9bc020ab02a0f32c86f0d"
-dependencies = []
-
-[[package]]
-name = "artgo_aigc_v1_3.aleo"
-network = "testnet3"
-location = "network"
-checksum = "ea21b4f760709e7ab91e824f6e277631cfb2fe8717c996269fd9fbe490ea1501"
-dependencies = ["credits.aleo"]
diff --git a/utils/tmp/project/program.json b/utils/tmp/project/program.json
deleted file mode 100644
index 159448be15..0000000000
--- a/utils/tmp/project/program.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "program": "transfer.aleo",
- "version": "0.0.0",
- "description": "",
- "license": "MIT",
- "dependencies": [
- {
- "name": "artgo_aigc_v1_3.aleo",
- "location": "network",
- "network": "testnet3"
- }
- ]
-}
diff --git a/utils/tmp/project/src/main.leo b/utils/tmp/project/src/main.leo
deleted file mode 100644
index 99fed7a263..0000000000
--- a/utils/tmp/project/src/main.leo
+++ /dev/null
@@ -1,14 +0,0 @@
-import artgo_aigc_v1_3.aleo;
-import credits.aleo;
-
-program transfer.aleo {
-
- mapping balances: u64 => u64;
-
- transition main(arg1: field, arg2: u64, arg3: address) -> artgo_aigc_v1_3.aleo/BidRecord {
- return artgo_aigc_v1_3.aleo/bid_order(arg1, arg2, arg3) then finalize();
- }
- finalize main() {
- Mapping::set(balances, 1u64, 1u64);
- }
-}
\ No newline at end of file
diff --git a/utils/tmp/simple/build/imports/credits.aleo b/utils/tmp/simple/build/imports/credits.aleo
deleted file mode 100644
index bdb2115699..0000000000
--- a/utils/tmp/simple/build/imports/credits.aleo
+++ /dev/null
@@ -1,312 +0,0 @@
-program credits.aleo;
-
-mapping committee:
- key as address.public;
- value as committee_state.public;
-
-struct committee_state:
- microcredits as u64;
- is_open as boolean;
-
-mapping bonded:
- key as address.public;
- value as bond_state.public;
-
-struct bond_state:
- validator as address;
- microcredits as u64;
-
-mapping unbonding:
- key as address.public;
- value as unbond_state.public;
-
-struct unbond_state:
- microcredits as u64;
- height as u32;
-
-mapping account:
- key as address.public;
- value as u64.public;
-
-record credits:
- owner as address.private;
- microcredits as u64.private;
-
-function bond_public:
- input r0 as address.public;
- input r1 as u64.public;
- gte r1 1000000u64 into r2;
- assert.eq r2 true ;
- async bond_public self.caller r0 r1 into r3;
- output r3 as credits.aleo/bond_public.future;
-
-finalize bond_public:
- input r0 as address.public;
- input r1 as address.public;
- input r2 as u64.public;
- is.eq r0 r1 into r3;
- branch.eq r3 true to bond_validator;
- branch.eq r3 false to bond_delegator;
- position bond_validator;
- cast 0u64 true into r4 as committee_state;
- get.or_use committee[r0] r4 into r5;
- assert.eq r5.is_open true ;
- add r5.microcredits r2 into r6;
- cast r6 r5.is_open into r7 as committee_state;
- cast r1 0u64 into r8 as bond_state;
- get.or_use bonded[r0] r8 into r9;
- assert.eq r9.validator r1 ;
- add r9.microcredits r2 into r10;
- gte r10 1000000000000u64 into r11;
- assert.eq r11 true ;
- cast r1 r10 into r12 as bond_state;
- get account[r0] into r13;
- sub r13 r2 into r14;
- set r7 into committee[r0];
- set r12 into bonded[r0];
- set r14 into account[r0];
- branch.eq true true to end;
- position bond_delegator;
- contains committee[r0] into r15;
- assert.eq r15 false ;
- get committee[r1] into r16;
- assert.eq r16.is_open true ;
- add r16.microcredits r2 into r17;
- cast r17 r16.is_open into r18 as committee_state;
- cast r1 0u64 into r19 as bond_state;
- get.or_use bonded[r0] r19 into r20;
- assert.eq r20.validator r1 ;
- add r20.microcredits r2 into r21;
- gte r21 10000000u64 into r22;
- assert.eq r22 true ;
- cast r1 r21 into r23 as bond_state;
- get account[r0] into r24;
- sub r24 r2 into r25;
- set r18 into committee[r1];
- set r23 into bonded[r0];
- set r25 into account[r0];
- position end;
-
-function unbond_public:
- input r0 as u64.public;
- async unbond_public self.caller r0 into r1;
- output r1 as credits.aleo/unbond_public.future;
-
-finalize unbond_public:
- input r0 as address.public;
- input r1 as u64.public;
- cast 0u64 0u32 into r2 as unbond_state;
- get.or_use unbonding[r0] r2 into r3;
- add block.height 360u32 into r4;
- contains committee[r0] into r5;
- branch.eq r5 true to unbond_validator;
- branch.eq r5 false to unbond_delegator;
- position unbond_validator;
- get committee[r0] into r6;
- sub r6.microcredits r1 into r7;
- get bonded[r0] into r8;
- assert.eq r8.validator r0 ;
- sub r8.microcredits r1 into r9;
- gte r9 1000000000000u64 into r10;
- branch.eq r10 true to decrement_validator;
- branch.eq r10 false to remove_validator;
- position decrement_validator;
- cast r7 r6.is_open into r11 as committee_state;
- set r11 into committee[r0];
- cast r0 r9 into r12 as bond_state;
- set r12 into bonded[r0];
- add r3.microcredits r1 into r13;
- cast r13 r4 into r14 as unbond_state;
- set r14 into unbonding[r0];
- branch.eq true true to end;
- position remove_validator;
- assert.eq r6.microcredits r8.microcredits ;
- remove committee[r0];
- remove bonded[r0];
- add r3.microcredits r8.microcredits into r15;
- cast r15 r4 into r16 as unbond_state;
- set r16 into unbonding[r0];
- branch.eq true true to end;
- position unbond_delegator;
- get bonded[r0] into r17;
- sub r17.microcredits r1 into r18;
- gte r18 10000000u64 into r19;
- branch.eq r19 true to decrement_delegator;
- branch.eq r19 false to remove_delegator;
- position decrement_delegator;
- get committee[r17.validator] into r20;
- sub r20.microcredits r1 into r21;
- cast r21 r20.is_open into r22 as committee_state;
- set r22 into committee[r17.validator];
- cast r17.validator r18 into r23 as bond_state;
- set r23 into bonded[r0];
- add r3.microcredits r1 into r24;
- cast r24 r4 into r25 as unbond_state;
- set r25 into unbonding[r0];
- branch.eq true true to end;
- position remove_delegator;
- get committee[r17.validator] into r26;
- sub r26.microcredits r17.microcredits into r27;
- cast r27 r26.is_open into r28 as committee_state;
- set r28 into committee[r17.validator];
- remove bonded[r0];
- add r3.microcredits r17.microcredits into r29;
- cast r29 r4 into r30 as unbond_state;
- set r30 into unbonding[r0];
- position end;
-
-function unbond_delegator_as_validator:
- input r0 as address.public;
- async unbond_delegator_as_validator self.caller r0 into r1;
- output r1 as credits.aleo/unbond_delegator_as_validator.future;
-
-finalize unbond_delegator_as_validator:
- input r0 as address.public;
- input r1 as address.public;
- get committee[r0] into r2;
- assert.eq r2.is_open false ;
- contains committee[r1] into r3;
- assert.eq r3 false ;
- get bonded[r1] into r4;
- assert.eq r4.validator r0 ;
- sub r2.microcredits r4.microcredits into r5;
- cast r5 r2.is_open into r6 as committee_state;
- cast 0u64 0u32 into r7 as unbond_state;
- get.or_use unbonding[r1] r7 into r8;
- add r8.microcredits r4.microcredits into r9;
- add block.height 360u32 into r10;
- cast r9 r10 into r11 as unbond_state;
- set r6 into committee[r0];
- remove bonded[r1];
- set r11 into unbonding[r1];
-
-function claim_unbond_public:
- async claim_unbond_public self.caller into r0;
- output r0 as credits.aleo/claim_unbond_public.future;
-
-finalize claim_unbond_public:
- input r0 as address.public;
- get unbonding[r0] into r1;
- gte block.height r1.height into r2;
- assert.eq r2 true ;
- get.or_use account[r0] 0u64 into r3;
- add r1.microcredits r3 into r4;
- set r4 into account[r0];
- remove unbonding[r0];
-
-function set_validator_state:
- input r0 as boolean.public;
- async set_validator_state self.caller r0 into r1;
- output r1 as credits.aleo/set_validator_state.future;
-
-finalize set_validator_state:
- input r0 as address.public;
- input r1 as boolean.public;
- get committee[r0] into r2;
- cast r2.microcredits r1 into r3 as committee_state;
- set r3 into committee[r0];
-
-function transfer_public:
- input r0 as address.public;
- input r1 as u64.public;
- async transfer_public self.caller r0 r1 into r2;
- output r2 as credits.aleo/transfer_public.future;
-
-finalize transfer_public:
- input r0 as address.public;
- input r1 as address.public;
- input r2 as u64.public;
- get account[r0] into r3;
- sub r3 r2 into r4;
- set r4 into account[r0];
- get.or_use account[r1] 0u64 into r5;
- add r5 r2 into r6;
- set r6 into account[r1];
-
-function transfer_private:
- input r0 as credits.record;
- input r1 as address.private;
- input r2 as u64.private;
- sub r0.microcredits r2 into r3;
- cast r1 r2 into r4 as credits.record;
- cast r0.owner r3 into r5 as credits.record;
- output r4 as credits.record;
- output r5 as credits.record;
-
-function transfer_private_to_public:
- input r0 as credits.record;
- input r1 as address.public;
- input r2 as u64.public;
- sub r0.microcredits r2 into r3;
- cast r0.owner r3 into r4 as credits.record;
- async transfer_private_to_public r1 r2 into r5;
- output r4 as credits.record;
- output r5 as credits.aleo/transfer_private_to_public.future;
-
-finalize transfer_private_to_public:
- input r0 as address.public;
- input r1 as u64.public;
- get.or_use account[r0] 0u64 into r2;
- add r1 r2 into r3;
- set r3 into account[r0];
-
-function transfer_public_to_private:
- input r0 as address.private;
- input r1 as u64.public;
- cast r0 r1 into r2 as credits.record;
- async transfer_public_to_private self.caller r1 into r3;
- output r2 as credits.record;
- output r3 as credits.aleo/transfer_public_to_private.future;
-
-finalize transfer_public_to_private:
- input r0 as address.public;
- input r1 as u64.public;
- get account[r0] into r2;
- sub r2 r1 into r3;
- set r3 into account[r0];
-
-function join:
- input r0 as credits.record;
- input r1 as credits.record;
- add r0.microcredits r1.microcredits into r2;
- cast r0.owner r2 into r3 as credits.record;
- output r3 as credits.record;
-
-function split:
- input r0 as credits.record;
- input r1 as u64.private;
- sub r0.microcredits r1 into r2;
- sub r2 10000u64 into r3;
- cast r0.owner r1 into r4 as credits.record;
- cast r0.owner r3 into r5 as credits.record;
- output r4 as credits.record;
- output r5 as credits.record;
-
-function fee_private:
- input r0 as credits.record;
- input r1 as u64.public;
- input r2 as u64.public;
- input r3 as field.public;
- assert.neq r1 0u64 ;
- assert.neq r3 0field ;
- add r1 r2 into r4;
- sub r0.microcredits r4 into r5;
- cast r0.owner r5 into r6 as credits.record;
- output r6 as credits.record;
-
-function fee_public:
- input r0 as u64.public;
- input r1 as u64.public;
- input r2 as field.public;
- assert.neq r0 0u64 ;
- assert.neq r2 0field ;
- add r0 r1 into r3;
- async fee_public self.caller r3 into r4;
- output r4 as credits.aleo/fee_public.future;
-
-finalize fee_public:
- input r0 as address.public;
- input r1 as u64.public;
- get account[r0] into r2;
- sub r2 r1 into r3;
- set r3 into account[r0];
diff --git a/utils/tmp/simple/build/imports/distrofund_private_transfer.aleo b/utils/tmp/simple/build/imports/distrofund_private_transfer.aleo
deleted file mode 100644
index 22e1c99132..0000000000
--- a/utils/tmp/simple/build/imports/distrofund_private_transfer.aleo
+++ /dev/null
@@ -1,633 +0,0 @@
-import credits.aleo;
-
-program distrofund_private_transfer.aleo;
-
-struct Addresses1:
- address1 as address;
-
-struct Addresses2:
- address1 as address;
- address2 as address;
-
-struct Addresses3:
- address1 as address;
- address2 as address;
- address3 as address;
-
-struct Addresses4:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
-
-struct Addresses5:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
-
-struct Addresses6:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
-
-struct Addresses7:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
-
-struct Addresses8:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
- address8 as address;
-
-struct Addresses9:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
- address8 as address;
- address9 as address;
-
-struct Addresses10:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
- address8 as address;
- address9 as address;
- address10 as address;
-
-struct Addresses11:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
- address8 as address;
- address9 as address;
- address10 as address;
- address11 as address;
-
-struct Addresses12:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
- address8 as address;
- address9 as address;
- address10 as address;
- address11 as address;
- address12 as address;
-
-struct Addresses13:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
- address8 as address;
- address9 as address;
- address10 as address;
- address11 as address;
- address12 as address;
- address13 as address;
-
-struct Addresses14:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
- address8 as address;
- address9 as address;
- address10 as address;
- address11 as address;
- address12 as address;
- address13 as address;
- address14 as address;
-
-struct Addresses15:
- address1 as address;
- address2 as address;
- address3 as address;
- address4 as address;
- address5 as address;
- address6 as address;
- address7 as address;
- address8 as address;
- address9 as address;
- address10 as address;
- address11 as address;
- address12 as address;
- address13 as address;
- address14 as address;
- address15 as address;
-
-struct Amount1:
- amount1 as u64;
-
-struct Amount2:
- amount1 as u64;
- amount2 as u64;
-
-struct Amount3:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
-
-struct Amount4:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
-
-struct Amount5:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
-
-struct Amount6:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
-
-struct Amount7:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
-
-struct Amount8:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
- amount8 as u64;
-
-struct Amount9:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
- amount8 as u64;
- amount9 as u64;
-
-struct Amount10:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
- amount8 as u64;
- amount9 as u64;
- amount10 as u64;
-
-struct Amount11:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
- amount8 as u64;
- amount9 as u64;
- amount10 as u64;
- amount11 as u64;
-
-struct Amount12:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
- amount8 as u64;
- amount9 as u64;
- amount10 as u64;
- amount11 as u64;
- amount12 as u64;
-
-struct Amount13:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
- amount8 as u64;
- amount9 as u64;
- amount10 as u64;
- amount11 as u64;
- amount12 as u64;
- amount13 as u64;
-
-struct Amount14:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
- amount8 as u64;
- amount9 as u64;
- amount10 as u64;
- amount11 as u64;
- amount12 as u64;
- amount13 as u64;
- amount14 as u64;
-
-struct Amount15:
- amount1 as u64;
- amount2 as u64;
- amount3 as u64;
- amount4 as u64;
- amount5 as u64;
- amount6 as u64;
- amount7 as u64;
- amount8 as u64;
- amount9 as u64;
- amount10 as u64;
- amount11 as u64;
- amount12 as u64;
- amount13 as u64;
- amount14 as u64;
- amount15 as u64;
-
-function transfer_one:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses1.public;
- input r2 as Amount1.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- output r4 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
-
-function transfer_two:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses2.public;
- input r2 as Amount2.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- output r6 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
-
-function transfer_three:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses3.public;
- input r2 as Amount3.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- output r8 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
-
-function transfer_four:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses4.public;
- input r2 as Amount4.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- output r10 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
-
-function transfer_five:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses5.public;
- input r2 as Amount5.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- output r12 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
-
-function transfer_six:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses6.public;
- input r2 as Amount6.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- output r14 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
-
-function transfer_seven:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses7.public;
- input r2 as Amount7.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- output r16 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
-
-function transfer_eight:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses8.public;
- input r2 as Amount8.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- call credits.aleo/transfer_private r16 r1.address8 r2.amount8 into r17 r18;
- output r18 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
- output r17 as credits.aleo/credits.record;
-
-function transfer_nine:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses9.public;
- input r2 as Amount9.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- call credits.aleo/transfer_private r16 r1.address8 r2.amount8 into r17 r18;
- call credits.aleo/transfer_private r18 r1.address9 r2.amount9 into r19 r20;
- output r20 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
- output r17 as credits.aleo/credits.record;
- output r19 as credits.aleo/credits.record;
-
-function transfer_ten:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses10.public;
- input r2 as Amount10.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- call credits.aleo/transfer_private r16 r1.address8 r2.amount8 into r17 r18;
- call credits.aleo/transfer_private r18 r1.address9 r2.amount9 into r19 r20;
- call credits.aleo/transfer_private r20 r1.address10 r2.amount10 into r21 r22;
- output r22 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
- output r17 as credits.aleo/credits.record;
- output r19 as credits.aleo/credits.record;
- output r21 as credits.aleo/credits.record;
-
-function transfer_eleven:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses11.public;
- input r2 as Amount11.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- call credits.aleo/transfer_private r16 r1.address8 r2.amount8 into r17 r18;
- call credits.aleo/transfer_private r18 r1.address9 r2.amount9 into r19 r20;
- call credits.aleo/transfer_private r20 r1.address10 r2.amount10 into r21 r22;
- call credits.aleo/transfer_private r22 r1.address11 r2.amount11 into r23 r24;
- output r24 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
- output r17 as credits.aleo/credits.record;
- output r19 as credits.aleo/credits.record;
- output r21 as credits.aleo/credits.record;
- output r23 as credits.aleo/credits.record;
-
-function transfer_twelve:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses12.public;
- input r2 as Amount12.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- call credits.aleo/transfer_private r16 r1.address8 r2.amount8 into r17 r18;
- call credits.aleo/transfer_private r18 r1.address9 r2.amount9 into r19 r20;
- call credits.aleo/transfer_private r20 r1.address10 r2.amount10 into r21 r22;
- call credits.aleo/transfer_private r22 r1.address11 r2.amount11 into r23 r24;
- call credits.aleo/transfer_private r24 r1.address12 r2.amount12 into r25 r26;
- output r26 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
- output r17 as credits.aleo/credits.record;
- output r19 as credits.aleo/credits.record;
- output r21 as credits.aleo/credits.record;
- output r23 as credits.aleo/credits.record;
- output r25 as credits.aleo/credits.record;
-
-function transfer_thirteen:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses13.public;
- input r2 as Amount13.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- call credits.aleo/transfer_private r16 r1.address8 r2.amount8 into r17 r18;
- call credits.aleo/transfer_private r18 r1.address9 r2.amount9 into r19 r20;
- call credits.aleo/transfer_private r20 r1.address10 r2.amount10 into r21 r22;
- call credits.aleo/transfer_private r22 r1.address11 r2.amount11 into r23 r24;
- call credits.aleo/transfer_private r24 r1.address12 r2.amount12 into r25 r26;
- call credits.aleo/transfer_private r26 r1.address13 r2.amount13 into r27 r28;
- output r28 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
- output r17 as credits.aleo/credits.record;
- output r19 as credits.aleo/credits.record;
- output r21 as credits.aleo/credits.record;
- output r23 as credits.aleo/credits.record;
- output r25 as credits.aleo/credits.record;
- output r27 as credits.aleo/credits.record;
-
-function transfer_fourteen:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses14.public;
- input r2 as Amount14.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- call credits.aleo/transfer_private r16 r1.address8 r2.amount8 into r17 r18;
- call credits.aleo/transfer_private r18 r1.address9 r2.amount9 into r19 r20;
- call credits.aleo/transfer_private r20 r1.address10 r2.amount10 into r21 r22;
- call credits.aleo/transfer_private r22 r1.address11 r2.amount11 into r23 r24;
- call credits.aleo/transfer_private r24 r1.address12 r2.amount12 into r25 r26;
- call credits.aleo/transfer_private r26 r1.address13 r2.amount13 into r27 r28;
- call credits.aleo/transfer_private r28 r1.address14 r2.amount14 into r29 r30;
- output r30 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
- output r17 as credits.aleo/credits.record;
- output r19 as credits.aleo/credits.record;
- output r21 as credits.aleo/credits.record;
- output r23 as credits.aleo/credits.record;
- output r25 as credits.aleo/credits.record;
- output r27 as credits.aleo/credits.record;
- output r29 as credits.aleo/credits.record;
-
-function transfer_fifteen:
- input r0 as credits.aleo/credits.record;
- input r1 as Addresses15.public;
- input r2 as Amount15.private;
- call credits.aleo/transfer_private r0 r1.address1 r2.amount1 into r3 r4;
- call credits.aleo/transfer_private r4 r1.address2 r2.amount2 into r5 r6;
- call credits.aleo/transfer_private r6 r1.address3 r2.amount3 into r7 r8;
- call credits.aleo/transfer_private r8 r1.address4 r2.amount4 into r9 r10;
- call credits.aleo/transfer_private r10 r1.address5 r2.amount5 into r11 r12;
- call credits.aleo/transfer_private r12 r1.address6 r2.amount6 into r13 r14;
- call credits.aleo/transfer_private r14 r1.address7 r2.amount7 into r15 r16;
- call credits.aleo/transfer_private r16 r1.address8 r2.amount8 into r17 r18;
- call credits.aleo/transfer_private r18 r1.address9 r2.amount9 into r19 r20;
- call credits.aleo/transfer_private r20 r1.address10 r2.amount10 into r21 r22;
- call credits.aleo/transfer_private r22 r1.address11 r2.amount11 into r23 r24;
- call credits.aleo/transfer_private r24 r1.address12 r2.amount12 into r25 r26;
- call credits.aleo/transfer_private r26 r1.address13 r2.amount13 into r27 r28;
- call credits.aleo/transfer_private r28 r1.address14 r2.amount14 into r29 r30;
- call credits.aleo/transfer_private r30 r1.address15 r2.amount15 into r31 r32;
- output r32 as credits.aleo/credits.record;
- output r3 as credits.aleo/credits.record;
- output r5 as credits.aleo/credits.record;
- output r7 as credits.aleo/credits.record;
- output r9 as credits.aleo/credits.record;
- output r11 as credits.aleo/credits.record;
- output r13 as credits.aleo/credits.record;
- output r15 as credits.aleo/credits.record;
- output r17 as credits.aleo/credits.record;
- output r19 as credits.aleo/credits.record;
- output r21 as credits.aleo/credits.record;
- output r23 as credits.aleo/credits.record;
- output r25 as credits.aleo/credits.record;
- output r27 as credits.aleo/credits.record;
- output r29 as credits.aleo/credits.record;
- output r31 as credits.aleo/credits.record;
diff --git a/utils/tmp/simple/build/main.aleo b/utils/tmp/simple/build/main.aleo
deleted file mode 100644
index 7b91000e9b..0000000000
--- a/utils/tmp/simple/build/main.aleo
+++ /dev/null
@@ -1,45 +0,0 @@
-import credits.aleo;
-import distrofund_private_transfer.aleo;program simple.aleo;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-function main:
- input r0 as credits.aleo/credits.record;
- input r1 as distrofund_private_transfer.aleo/Addresses1.struct;
- input r2 as distrofund_private_transfer.aleo/Amount1.struct;
- call distrofund_private_transfer.aleo/transfer_one r0 r1 r2 into r3 r4;
- output r3 as credits.aleo/credits.record;
- output r4 as credits.aleo/credits.record;
diff --git a/utils/tmp/simple/build/program.json b/utils/tmp/simple/build/program.json
deleted file mode 100644
index 1a2cc617d9..0000000000
--- a/utils/tmp/simple/build/program.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "program": "simple.aleo",
- "version": "0.0.0",
- "description": "",
- "license": "MIT",
- "dependencies": [
- {
- "name": "distrofund_private_transfer.aleo",
- "location": "network",
- "network": "testnet3"
- }
- ]
-}
\ No newline at end of file
diff --git a/utils/tmp/simple/leo.lock b/utils/tmp/simple/leo.lock
deleted file mode 100644
index 9668c1fcbf..0000000000
--- a/utils/tmp/simple/leo.lock
+++ /dev/null
@@ -1,13 +0,0 @@
-[[package]]
-name = "distrofund_private_transfer.aleo"
-network = "testnet3"
-location = "network"
-checksum = "5885825ba7350bb57c70baa44730545eb57757fade520217516ace98c9a6c6e4"
-dependencies = ["credits.aleo"]
-
-[[package]]
-name = "credits.aleo"
-network = "testnet3"
-location = "network"
-checksum = "2ac86d83bca4fbf2c021660875ea1e5b4e65c7a192d9bc020ab02a0f32c86f0d"
-dependencies = []
diff --git a/utils/tmp/simple/program.json b/utils/tmp/simple/program.json
deleted file mode 100644
index 1a2cc617d9..0000000000
--- a/utils/tmp/simple/program.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "program": "simple.aleo",
- "version": "0.0.0",
- "description": "",
- "license": "MIT",
- "dependencies": [
- {
- "name": "distrofund_private_transfer.aleo",
- "location": "network",
- "network": "testnet3"
- }
- ]
-}
\ No newline at end of file
diff --git a/utils/tmp/simple/src/main.leo b/utils/tmp/simple/src/main.leo
deleted file mode 100644
index 61f6b2dc05..0000000000
--- a/utils/tmp/simple/src/main.leo
+++ /dev/null
@@ -1,8 +0,0 @@
-import distrofund_private_transfer.aleo;
-import credits.aleo;
-
-program simple.aleo {
- transition main(arg1: credits.aleo/credits, arg2:distrofund_private_transfer.aleo/Addresses1, arg3:distrofund_private_transfer.aleo/Amount1) -> (credits.aleo/credits.record, credits.aleo/credits.record) {
- return distrofund_private_transfer.aleo/transfer_one(arg1, arg2, arg3);
- }
-}
\ No newline at end of file
diff --git a/utils/tmp/super_simple/build/build/credits-aleo/transfer_private.prover b/utils/tmp/super_simple/build/build/credits-aleo/transfer_private.prover
deleted file mode 100644
index 05441dfe56..0000000000
Binary files a/utils/tmp/super_simple/build/build/credits-aleo/transfer_private.prover and /dev/null differ
diff --git a/utils/tmp/super_simple/build/build/credits-aleo/transfer_private.verifier b/utils/tmp/super_simple/build/build/credits-aleo/transfer_private.verifier
deleted file mode 100644
index c2102d4423..0000000000
Binary files a/utils/tmp/super_simple/build/build/credits-aleo/transfer_private.verifier and /dev/null differ
diff --git a/utils/tmp/super_simple/build/build/main.avm b/utils/tmp/super_simple/build/build/main.avm
deleted file mode 100644
index b513e0481d..0000000000
Binary files a/utils/tmp/super_simple/build/build/main.avm and /dev/null differ
diff --git a/utils/tmp/super_simple/build/build/main.prover b/utils/tmp/super_simple/build/build/main.prover
deleted file mode 100644
index f53eb7ce28..0000000000
Binary files a/utils/tmp/super_simple/build/build/main.prover and /dev/null differ
diff --git a/utils/tmp/super_simple/build/build/main.verifier b/utils/tmp/super_simple/build/build/main.verifier
deleted file mode 100644
index 555814d1a9..0000000000
Binary files a/utils/tmp/super_simple/build/build/main.verifier and /dev/null differ
diff --git a/utils/tmp/super_simple/build/imports/credits.aleo b/utils/tmp/super_simple/build/imports/credits.aleo
deleted file mode 100644
index bdb2115699..0000000000
--- a/utils/tmp/super_simple/build/imports/credits.aleo
+++ /dev/null
@@ -1,312 +0,0 @@
-program credits.aleo;
-
-mapping committee:
- key as address.public;
- value as committee_state.public;
-
-struct committee_state:
- microcredits as u64;
- is_open as boolean;
-
-mapping bonded:
- key as address.public;
- value as bond_state.public;
-
-struct bond_state:
- validator as address;
- microcredits as u64;
-
-mapping unbonding:
- key as address.public;
- value as unbond_state.public;
-
-struct unbond_state:
- microcredits as u64;
- height as u32;
-
-mapping account:
- key as address.public;
- value as u64.public;
-
-record credits:
- owner as address.private;
- microcredits as u64.private;
-
-function bond_public:
- input r0 as address.public;
- input r1 as u64.public;
- gte r1 1000000u64 into r2;
- assert.eq r2 true ;
- async bond_public self.caller r0 r1 into r3;
- output r3 as credits.aleo/bond_public.future;
-
-finalize bond_public:
- input r0 as address.public;
- input r1 as address.public;
- input r2 as u64.public;
- is.eq r0 r1 into r3;
- branch.eq r3 true to bond_validator;
- branch.eq r3 false to bond_delegator;
- position bond_validator;
- cast 0u64 true into r4 as committee_state;
- get.or_use committee[r0] r4 into r5;
- assert.eq r5.is_open true ;
- add r5.microcredits r2 into r6;
- cast r6 r5.is_open into r7 as committee_state;
- cast r1 0u64 into r8 as bond_state;
- get.or_use bonded[r0] r8 into r9;
- assert.eq r9.validator r1 ;
- add r9.microcredits r2 into r10;
- gte r10 1000000000000u64 into r11;
- assert.eq r11 true ;
- cast r1 r10 into r12 as bond_state;
- get account[r0] into r13;
- sub r13 r2 into r14;
- set r7 into committee[r0];
- set r12 into bonded[r0];
- set r14 into account[r0];
- branch.eq true true to end;
- position bond_delegator;
- contains committee[r0] into r15;
- assert.eq r15 false ;
- get committee[r1] into r16;
- assert.eq r16.is_open true ;
- add r16.microcredits r2 into r17;
- cast r17 r16.is_open into r18 as committee_state;
- cast r1 0u64 into r19 as bond_state;
- get.or_use bonded[r0] r19 into r20;
- assert.eq r20.validator r1 ;
- add r20.microcredits r2 into r21;
- gte r21 10000000u64 into r22;
- assert.eq r22 true ;
- cast r1 r21 into r23 as bond_state;
- get account[r0] into r24;
- sub r24 r2 into r25;
- set r18 into committee[r1];
- set r23 into bonded[r0];
- set r25 into account[r0];
- position end;
-
-function unbond_public:
- input r0 as u64.public;
- async unbond_public self.caller r0 into r1;
- output r1 as credits.aleo/unbond_public.future;
-
-finalize unbond_public:
- input r0 as address.public;
- input r1 as u64.public;
- cast 0u64 0u32 into r2 as unbond_state;
- get.or_use unbonding[r0] r2 into r3;
- add block.height 360u32 into r4;
- contains committee[r0] into r5;
- branch.eq r5 true to unbond_validator;
- branch.eq r5 false to unbond_delegator;
- position unbond_validator;
- get committee[r0] into r6;
- sub r6.microcredits r1 into r7;
- get bonded[r0] into r8;
- assert.eq r8.validator r0 ;
- sub r8.microcredits r1 into r9;
- gte r9 1000000000000u64 into r10;
- branch.eq r10 true to decrement_validator;
- branch.eq r10 false to remove_validator;
- position decrement_validator;
- cast r7 r6.is_open into r11 as committee_state;
- set r11 into committee[r0];
- cast r0 r9 into r12 as bond_state;
- set r12 into bonded[r0];
- add r3.microcredits r1 into r13;
- cast r13 r4 into r14 as unbond_state;
- set r14 into unbonding[r0];
- branch.eq true true to end;
- position remove_validator;
- assert.eq r6.microcredits r8.microcredits ;
- remove committee[r0];
- remove bonded[r0];
- add r3.microcredits r8.microcredits into r15;
- cast r15 r4 into r16 as unbond_state;
- set r16 into unbonding[r0];
- branch.eq true true to end;
- position unbond_delegator;
- get bonded[r0] into r17;
- sub r17.microcredits r1 into r18;
- gte r18 10000000u64 into r19;
- branch.eq r19 true to decrement_delegator;
- branch.eq r19 false to remove_delegator;
- position decrement_delegator;
- get committee[r17.validator] into r20;
- sub r20.microcredits r1 into r21;
- cast r21 r20.is_open into r22 as committee_state;
- set r22 into committee[r17.validator];
- cast r17.validator r18 into r23 as bond_state;
- set r23 into bonded[r0];
- add r3.microcredits r1 into r24;
- cast r24 r4 into r25 as unbond_state;
- set r25 into unbonding[r0];
- branch.eq true true to end;
- position remove_delegator;
- get committee[r17.validator] into r26;
- sub r26.microcredits r17.microcredits into r27;
- cast r27 r26.is_open into r28 as committee_state;
- set r28 into committee[r17.validator];
- remove bonded[r0];
- add r3.microcredits r17.microcredits into r29;
- cast r29 r4 into r30 as unbond_state;
- set r30 into unbonding[r0];
- position end;
-
-function unbond_delegator_as_validator:
- input r0 as address.public;
- async unbond_delegator_as_validator self.caller r0 into r1;
- output r1 as credits.aleo/unbond_delegator_as_validator.future;
-
-finalize unbond_delegator_as_validator:
- input r0 as address.public;
- input r1 as address.public;
- get committee[r0] into r2;
- assert.eq r2.is_open false ;
- contains committee[r1] into r3;
- assert.eq r3 false ;
- get bonded[r1] into r4;
- assert.eq r4.validator r0 ;
- sub r2.microcredits r4.microcredits into r5;
- cast r5 r2.is_open into r6 as committee_state;
- cast 0u64 0u32 into r7 as unbond_state;
- get.or_use unbonding[r1] r7 into r8;
- add r8.microcredits r4.microcredits into r9;
- add block.height 360u32 into r10;
- cast r9 r10 into r11 as unbond_state;
- set r6 into committee[r0];
- remove bonded[r1];
- set r11 into unbonding[r1];
-
-function claim_unbond_public:
- async claim_unbond_public self.caller into r0;
- output r0 as credits.aleo/claim_unbond_public.future;
-
-finalize claim_unbond_public:
- input r0 as address.public;
- get unbonding[r0] into r1;
- gte block.height r1.height into r2;
- assert.eq r2 true ;
- get.or_use account[r0] 0u64 into r3;
- add r1.microcredits r3 into r4;
- set r4 into account[r0];
- remove unbonding[r0];
-
-function set_validator_state:
- input r0 as boolean.public;
- async set_validator_state self.caller r0 into r1;
- output r1 as credits.aleo/set_validator_state.future;
-
-finalize set_validator_state:
- input r0 as address.public;
- input r1 as boolean.public;
- get committee[r0] into r2;
- cast r2.microcredits r1 into r3 as committee_state;
- set r3 into committee[r0];
-
-function transfer_public:
- input r0 as address.public;
- input r1 as u64.public;
- async transfer_public self.caller r0 r1 into r2;
- output r2 as credits.aleo/transfer_public.future;
-
-finalize transfer_public:
- input r0 as address.public;
- input r1 as address.public;
- input r2 as u64.public;
- get account[r0] into r3;
- sub r3 r2 into r4;
- set r4 into account[r0];
- get.or_use account[r1] 0u64 into r5;
- add r5 r2 into r6;
- set r6 into account[r1];
-
-function transfer_private:
- input r0 as credits.record;
- input r1 as address.private;
- input r2 as u64.private;
- sub r0.microcredits r2 into r3;
- cast r1 r2 into r4 as credits.record;
- cast r0.owner r3 into r5 as credits.record;
- output r4 as credits.record;
- output r5 as credits.record;
-
-function transfer_private_to_public:
- input r0 as credits.record;
- input r1 as address.public;
- input r2 as u64.public;
- sub r0.microcredits r2 into r3;
- cast r0.owner r3 into r4 as credits.record;
- async transfer_private_to_public r1 r2 into r5;
- output r4 as credits.record;
- output r5 as credits.aleo/transfer_private_to_public.future;
-
-finalize transfer_private_to_public:
- input r0 as address.public;
- input r1 as u64.public;
- get.or_use account[r0] 0u64 into r2;
- add r1 r2 into r3;
- set r3 into account[r0];
-
-function transfer_public_to_private:
- input r0 as address.private;
- input r1 as u64.public;
- cast r0 r1 into r2 as credits.record;
- async transfer_public_to_private self.caller r1 into r3;
- output r2 as credits.record;
- output r3 as credits.aleo/transfer_public_to_private.future;
-
-finalize transfer_public_to_private:
- input r0 as address.public;
- input r1 as u64.public;
- get account[r0] into r2;
- sub r2 r1 into r3;
- set r3 into account[r0];
-
-function join:
- input r0 as credits.record;
- input r1 as credits.record;
- add r0.microcredits r1.microcredits into r2;
- cast r0.owner r2 into r3 as credits.record;
- output r3 as credits.record;
-
-function split:
- input r0 as credits.record;
- input r1 as u64.private;
- sub r0.microcredits r1 into r2;
- sub r2 10000u64 into r3;
- cast r0.owner r1 into r4 as credits.record;
- cast r0.owner r3 into r5 as credits.record;
- output r4 as credits.record;
- output r5 as credits.record;
-
-function fee_private:
- input r0 as credits.record;
- input r1 as u64.public;
- input r2 as u64.public;
- input r3 as field.public;
- assert.neq r1 0u64 ;
- assert.neq r3 0field ;
- add r1 r2 into r4;
- sub r0.microcredits r4 into r5;
- cast r0.owner r5 into r6 as credits.record;
- output r6 as credits.record;
-
-function fee_public:
- input r0 as u64.public;
- input r1 as u64.public;
- input r2 as field.public;
- assert.neq r0 0u64 ;
- assert.neq r2 0field ;
- add r0 r1 into r3;
- async fee_public self.caller r3 into r4;
- output r4 as credits.aleo/fee_public.future;
-
-finalize fee_public:
- input r0 as address.public;
- input r1 as u64.public;
- get account[r0] into r2;
- sub r2 r1 into r3;
- set r3 into account[r0];
diff --git a/utils/tmp/super_simple/build/main.aleo b/utils/tmp/super_simple/build/main.aleo
deleted file mode 100644
index 982afae435..0000000000
--- a/utils/tmp/super_simple/build/main.aleo
+++ /dev/null
@@ -1,15 +0,0 @@
-import credits.aleo;
-program super_simple.aleo;
-
-
-
-
-
-
-function main:
- input r0 as credits.aleo/credits.record;
- input r1 as address.private;
- input r2 as u64.private;
- call credits.aleo/transfer_private r0 r1 r2 into r3 r4;
- output r3 as credits.aleo/credits.record;
- output r4 as credits.aleo/credits.record;
diff --git a/utils/tmp/super_simple/build/program.json b/utils/tmp/super_simple/build/program.json
deleted file mode 100644
index 3f68feaa72..0000000000
--- a/utils/tmp/super_simple/build/program.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "program": "super_simple.aleo",
- "version": "0.0.0",
- "description": "",
- "license": "MIT",
- "dependencies": [
- {
- "name": "credits.aleo",
- "location": "network",
- "network": "testnet3"
- }
- ]
-}
\ No newline at end of file
diff --git a/utils/tmp/super_simple/leo.lock b/utils/tmp/super_simple/leo.lock
deleted file mode 100644
index e2fb803bc4..0000000000
--- a/utils/tmp/super_simple/leo.lock
+++ /dev/null
@@ -1,6 +0,0 @@
-[[package]]
-name = "credits.aleo"
-network = "testnet3"
-location = "network"
-checksum = "2ac86d83bca4fbf2c021660875ea1e5b4e65c7a192d9bc020ab02a0f32c86f0d"
-dependencies = []
diff --git a/utils/tmp/super_simple/program.json b/utils/tmp/super_simple/program.json
deleted file mode 100644
index 3f68feaa72..0000000000
--- a/utils/tmp/super_simple/program.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "program": "super_simple.aleo",
- "version": "0.0.0",
- "description": "",
- "license": "MIT",
- "dependencies": [
- {
- "name": "credits.aleo",
- "location": "network",
- "network": "testnet3"
- }
- ]
-}
\ No newline at end of file
diff --git a/utils/tmp/super_simple/src/main.leo b/utils/tmp/super_simple/src/main.leo
deleted file mode 100644
index 9996eba51c..0000000000
--- a/utils/tmp/super_simple/src/main.leo
+++ /dev/null
@@ -1,7 +0,0 @@
-import credits.aleo;
-
-program super_simple.aleo {
- transition main(arg1: credits.aleo/credits, arg2: address, arg3: u64) -> (credits.aleo/credits.record, credits.aleo/credits.record) {
- return credits.aleo/transfer_private(arg1, arg2, arg3);
- }
-}
\ No newline at end of file