Update contracts
This commit is contained in:
parent
486c819bc3
commit
a9fb874cb3
6 changed files with 627 additions and 163 deletions
|
@ -17,7 +17,7 @@ ethereum_json_rpc_url: 'http://127.0.0.1:8545'
|
||||||
# Block explorer base URL (must be compatible with https://eips.ethereum.org/EIPS/eip-3091)
|
# Block explorer base URL (must be compatible with https://eips.ethereum.org/EIPS/eip-3091)
|
||||||
ethereum_explorer_url: null
|
ethereum_explorer_url: null
|
||||||
ethereum_contract:
|
ethereum_contract:
|
||||||
address: '0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512'
|
address: '0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0'
|
||||||
chain_id: 31337
|
chain_id: 31337
|
||||||
signing_key: null
|
signing_key: null
|
||||||
|
|
||||||
|
|
188
contracts/Manager.json
Normal file
188
contracts/Manager.json
Normal file
File diff suppressed because one or more lines are too long
422
contracts/MembershipToken.json
Normal file
422
contracts/MembershipToken.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -29,7 +29,7 @@ use super::utils::{
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const COLLECTIBLE: &str = "Collectible";
|
pub const COLLECTIBLE: &str = "Collectible";
|
||||||
pub const MINTER: &str = "Minter";
|
pub const MANAGER: &str = "Manager";
|
||||||
const TOKEN_WAIT_TIME: i64 = 10; // in minutes
|
const TOKEN_WAIT_TIME: i64 = 10; // in minutes
|
||||||
|
|
||||||
#[derive(thiserror::Error, Debug)]
|
#[derive(thiserror::Error, Debug)]
|
||||||
|
@ -93,15 +93,18 @@ pub async fn get_nft_contract(
|
||||||
let ethereum_config = config.ethereum_contract.as_ref()
|
let ethereum_config = config.ethereum_contract.as_ref()
|
||||||
.ok_or(EthereumError::ImproperlyConfigured)?;
|
.ok_or(EthereumError::ImproperlyConfigured)?;
|
||||||
|
|
||||||
let minter_abi = load_abi(&config.contract_dir, MINTER)?;
|
let manager_abi = load_abi(&config.contract_dir, MANAGER)?;
|
||||||
let minter_address = parse_address(ðereum_config.address)?;
|
let manager_address = parse_address(ðereum_config.address)?;
|
||||||
let minter = Contract::from_json(
|
let manager = Contract::from_json(
|
||||||
web3.eth(),
|
web3.eth(),
|
||||||
minter_address,
|
manager_address,
|
||||||
&minter_abi,
|
&manager_abi,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
let token_address = minter.query("token", (), None, Options::default(), None).await?;
|
let token_address = manager.query(
|
||||||
|
"collectible",
|
||||||
|
(), None, Options::default(), None,
|
||||||
|
).await?;
|
||||||
let token_abi = load_abi(&config.contract_dir, COLLECTIBLE)?;
|
let token_abi = load_abi(&config.contract_dir, COLLECTIBLE)?;
|
||||||
let token = Contract::from_json(
|
let token = Contract::from_json(
|
||||||
web3.eth(),
|
web3.eth(),
|
||||||
|
@ -206,8 +209,10 @@ pub async fn process_events(
|
||||||
// Mint event found
|
// Mint event found
|
||||||
let token_id_u256 = transfer.token_id.into_uint()
|
let token_id_u256 = transfer.token_id.into_uint()
|
||||||
.ok_or(EthereumError::ConversionError)?;
|
.ok_or(EthereumError::ConversionError)?;
|
||||||
let token_uri_result = contract.query("tokenURI", (token_id_u256,), None, Options::default(), None);
|
let token_uri: String = contract.query(
|
||||||
let token_uri: String = token_uri_result.await?;
|
"tokenURI", (token_id_u256,),
|
||||||
|
None, Options::default(), None,
|
||||||
|
).await?;
|
||||||
let tx_id_h256 = transfer.tx_id.ok_or(EthereumError::ConversionError)?;
|
let tx_id_h256 = transfer.tx_id.ok_or(EthereumError::ConversionError)?;
|
||||||
let tx_id = hex::encode(tx_id_h256.as_bytes());
|
let tx_id = hex::encode(tx_id_h256.as_bytes());
|
||||||
let ipfs_cid = parse_ipfs_url(&token_uri)
|
let ipfs_cid = parse_ipfs_url(&token_uri)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
|
|
||||||
use crate::config::Config;
|
use crate::config::Config;
|
||||||
use crate::ethereum::nft::MINTER;
|
use crate::ethereum::nft::MANAGER;
|
||||||
|
|
||||||
#[derive(Serialize)]
|
#[derive(Serialize)]
|
||||||
pub struct Instance {
|
pub struct Instance {
|
||||||
|
@ -31,7 +31,7 @@ impl From<&Config> for Instance {
|
||||||
login_message: config.login_message.clone(),
|
login_message: config.login_message.clone(),
|
||||||
ethereum_explorer_url: config.ethereum_explorer_url.clone(),
|
ethereum_explorer_url: config.ethereum_explorer_url.clone(),
|
||||||
nft_contract_name: config.ethereum_contract.as_ref()
|
nft_contract_name: config.ethereum_contract.as_ref()
|
||||||
.and(Some(MINTER.into())),
|
.and(Some(MANAGER.into())),
|
||||||
nft_contract_address: config.ethereum_contract.as_ref()
|
nft_contract_address: config.ethereum_contract.as_ref()
|
||||||
.map(|val| val.address.clone()),
|
.map(|val| val.address.clone()),
|
||||||
ipfs_gateway_url: config.ipfs_gateway_url.clone(),
|
ipfs_gateway_url: config.ipfs_gateway_url.clone(),
|
||||||
|
|
Loading…
Reference in a new issue