Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Stitch together, grant privileges
  • Loading branch information
Michal Handzlik committed Oct 11, 2022
commit c2370cd16f066e6b5148e3c8deca922668de8cdb
4 changes: 2 additions & 2 deletions contracts/button/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use ink_lang as ink;
#[ink::contract]
mod button_game {
use access_control::{roles::Role, traits::AccessControlled, ACCESS_CONTROL_PUBKEY};
use game_token::MINT_TO_SELECTOR;
use game_token::MINT_SELECTOR;
use ink_env::{
call::{build_call, Call, ExecutionInput, Selector},
CallFlags, DefaultEnvironment, Error as InkEnvError,
Expand Down Expand Up @@ -429,7 +429,7 @@ mod button_game {
build_call::<DefaultEnvironment>()
.call_type(Call::new().callee(self.reward_token))
.exec_input(
ExecutionInput::new(Selector::new(MINT_TO_SELECTOR))
ExecutionInput::new(Selector::new(MINT_SELECTOR))
.push_arg(to)
.push_arg(amount),
)
Expand Down
5 changes: 4 additions & 1 deletion contracts/env/dev
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,7 @@ export AUTHORITY_SEED=//Alice
export LIFETIME=20

# mint this many ticket tokens
export TOTAL_BALANCE=1000
export TICKET_BALANCE=100

# initial price of ticket on the marketplace
export INITIAL_PRICE=69
12 changes: 4 additions & 8 deletions contracts/game_token/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#![feature(min_specialization)]

pub use crate::game_token::{
ALLOWANCE_SELECTOR, BALANCE_OF_SELECTOR, MINT_TO_SELECTOR, TRANSFER_FROM_SELECTOR,
ALLOWANCE_SELECTOR, BALANCE_OF_SELECTOR, BURN_SELECTOR, MINT_SELECTOR, TRANSFER_FROM_SELECTOR,
TRANSFER_SELECTOR,
};

Expand All @@ -28,8 +28,8 @@ pub mod game_token {
pub const TRANSFER_SELECTOR: [u8; 4] = [0xdb, 0x20, 0xf9, 0xf5];
pub const TRANSFER_FROM_SELECTOR: [u8; 4] = [0x54, 0xb3, 0xc7, 0x6e];
pub const ALLOWANCE_SELECTOR: [u8; 4] = [0x4d, 0x47, 0xd9, 0x21];
pub const MINT_TO_SELECTOR: [u8; 4] = [0xfc, 0x3c, 0x75, 0xd4];
pub const BURN_FROM_SELECTOR: [u8; 4] = [0x7a, 0x9d, 0xa5, 0x10];
pub const MINT_SELECTOR: [u8; 4] = [0xfc, 0x3c, 0x75, 0xd4];
pub const BURN_SELECTOR: [u8; 4] = [0x7a, 0x9d, 0xa5, 0x10];

#[ink(storage)]
#[derive(Default, SpreadAllocate, Storage)]
Expand Down Expand Up @@ -141,7 +141,7 @@ pub mod game_token {
///
/// Will revert if called from an account without a proper role
#[ink(constructor)]
pub fn new(name: String, symbol: String, total_supply: Balance) -> Self {
pub fn new(name: String, symbol: String) -> Self {
let caller = Self::env().caller();
let code_hash = Self::env()
.own_code_hash()
Expand All @@ -166,10 +166,6 @@ pub mod game_token {
instance.metadata.name = Some(name);
instance.metadata.symbol = Some(symbol);
instance.metadata.decimals = 12;
instance
._mint_to(instance.env().caller(), total_supply)
.expect("Should mint");

instance.access_control = AccountId::from(ACCESS_CONTROL_PUBKEY);
}),
Err(why) => panic!("Could not initialize the contract {:?}", why),
Expand Down
8 changes: 3 additions & 5 deletions contracts/marketplace/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ pub const RESET_SELECTOR: [u8; 4] = [0x00, 0x00, 0x00, 0x01];
#[ink::contract]
pub mod marketplace {
use access_control::{roles::Role, traits::AccessControlled, ACCESS_CONTROL_PUBKEY};
use game_token::TRANSFER_FROM_SELECTOR as TRANSFER_FROM_GAME_TOKEN_SELECTOR;
use game_token::BURN_SELECTOR as REWARD_BURN_SELECTOR;
use ink_env::{
call::{build_call, Call, ExecutionInput, Selector},
CallFlags,
Expand Down Expand Up @@ -267,11 +267,9 @@ pub mod marketplace {
build_call::<Environment>()
.call_type(Call::new().callee(self.reward_token))
.exec_input(
ExecutionInput::new(Selector::new(TRANSFER_FROM_GAME_TOKEN_SELECTOR))
ExecutionInput::new(Selector::new(REWARD_BURN_SELECTOR))
.push_arg(from)
.push_arg(self.env().account_id())
.push_arg(amount)
.push_arg(DUMMY_DATA),
.push_arg(amount),
)
.call_flags(CallFlags::default().set_allow_reentry(true))
.returns::<Result<(), PSP22Error>>()
Expand Down
11 changes: 5 additions & 6 deletions contracts/scripts/deploy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ function deploy_ticket_token {

cd "$CONTRACTS_PATH"/ticket_token

local contract_address=$(cargo contract instantiate --url "$NODE" --constructor new --args \"$token_name\" \"$token_symbol\" "$TOTAL_BALANCE" --suri "$AUTHORITY_SEED" --salt "$salt" --skip-confirm)
local contract_address=$(cargo contract instantiate --url "$NODE" --constructor new --args \"$token_name\" \"$token_symbol\" "$TICKET_BALANCE" --suri "$AUTHORITY_SEED" --salt "$salt" --skip-confirm)
local contract_address=$(echo "$contract_address" | grep Contract | tail -1 | cut -c 14-)

echo "$token_symbol ticket contract instance address: $contract_address"
Expand All @@ -75,8 +75,7 @@ function deploy_game_token {

cd "$CONTRACTS_PATH"/game_token

# TODO : remove balance when token is mintable
local contract_address=$(cargo contract instantiate --url "$NODE" --constructor new --args \"$token_name\" \"$token_symbol\" "$TOTAL_BALANCE" --suri "$AUTHORITY_SEED" --salt "$salt" --skip-confirm)
local contract_address=$(cargo contract instantiate --url "$NODE" --constructor new --args \"$token_name\" \"$token_symbol\" --suri "$AUTHORITY_SEED" --salt "$salt" --skip-confirm)
local contract_address=$(echo "$contract_address" | grep Contract | tail -1 | cut -c 14-)

echo "$token_symbol token contract instance address: $contract_address"
Expand All @@ -88,8 +87,6 @@ function deploy_game_token {
# set the owner of the contract instance
cargo contract call --url "$NODE" --contract "$ACCESS_CONTROL" --message grant_role --args "$AUTHORITY" 'Owner('"$contract_address"')' --suri "$AUTHORITY_SEED" --skip-confirm

# TODO : MINTER / BURNER roles

eval "$__resultvar='$contract_address'"
}

Expand Down Expand Up @@ -118,6 +115,7 @@ function deploy_button_game {

cargo contract call --url "$NODE" --contract "$ACCESS_CONTROL" --message grant_role --args "$AUTHORITY" 'Owner('"$contract_address"')' --suri "$AUTHORITY_SEED" --skip-confirm
cargo contract call --url "$NODE" --contract "$ACCESS_CONTROL" --message grant_role --args "$contract_address" 'Admin('"$marketplace"')' --suri "$AUTHORITY_SEED" --skip-confirm
cargo contract call --url "$NODE" --contract "$ACCESS_CONTROL" --message grant_role --args "$contract_address" 'Minter('"$game_token"')' --suri "$AUTHORITY_SEED" --skip-confirm

eval "$__resultvar='$contract_address'"
}
Expand All @@ -135,7 +133,7 @@ function deploy_marketplace {
cd "$CONTRACTS_PATH"/marketplace

local blocks_per_hour=3600
local initial_price="$TOTAL_BALANCE"
local initial_price="$INITIAL_PRICE"
local min_price=1
local sale_price_multiplier=2

Expand All @@ -153,6 +151,7 @@ function deploy_marketplace {

cargo contract call --url "$NODE" --contract "$ACCESS_CONTROL" --message grant_role --args "$AUTHORITY" 'Owner('"$contract_address"')' --suri "$AUTHORITY_SEED" --skip-confirm
cargo contract call --url "$NODE" --contract "$ACCESS_CONTROL" --message grant_role --args "$AUTHORITY" 'Admin('"$contract_address"')' --suri "$AUTHORITY_SEED" --skip-confirm
cargo contract call --url "$NODE" --contract "$ACCESS_CONTROL" --message grant_role --args "$contract_address" 'Burner('"$game_token"')' --suri "$AUTHORITY_SEED" --skip-confirm

eval "$__resultvar='$contract_address'"
}
Expand Down