Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ Badge - Improve markplaces and wallet integration #62

Merged
merged 5 commits into from
Sep 26, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
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
6 changes: 3 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
[submodule "cairopen_contracts"]
url = https://github.com/CairOpen/cairopen-contracts.git
path = lib/cairopen_contracts
[submodule "bal7hazar_contracts"]
url = https://github.com/Bal7hazar/cairo-contracts.git
path = lib/bal7hazar_contracts
[submodule "cairo_contracts"]
url = https://github.com/OpenZeppelin/cairo-contracts
path = lib/cairo_contracts
branch = refs/heads/v0.4.0b
[submodule "bal7hazar_contracts"]
url = https://github.com/Bal7hazar/cairo-contracts.git
path = lib/bal7hazar_contracts
Binary file added assets/badges/img/banner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/badges/img/collection.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/badges/img/helper.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/badges/img/level-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/badges/img/level-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/badges/img/team.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions assets/badges/json/0.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"description": "Carbonable badge",
"external_url": "https://carbonable.io/",
"youtube_url": "https://www.youtube.com/watch?v=5dZrROBmfKU&ab_channel=Carbonable",
"image": "ipfs://bafybeigsolf5qc6vtyxak5pyxupnj6iymylwz44vbz4avam5bp3in2exf4/team.png",
"name": "Team",
"attributes": [
{
"trait_type": "Role",
"value": "Team"
}
]
}
13 changes: 13 additions & 0 deletions assets/badges/json/1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"description": "Carbonable badge",
"external_url": "https://carbonable.io/",
"youtube_url": "https://www.youtube.com/watch?v=5dZrROBmfKU&ab_channel=Carbonable",
"image": "ipfs://bafybeigsolf5qc6vtyxak5pyxupnj6iymylwz44vbz4avam5bp3in2exf4/helper.png",
"name": "Helper",
"attributes": [
{
"trait_type": "Role",
"value": "Helper"
}
]
}
17 changes: 17 additions & 0 deletions assets/badges/json/2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"description": "Carbonable badge",
"external_url": "https://carbonable.io/",
"youtube_url": "https://www.youtube.com/watch?v=5dZrROBmfKU&ab_channel=Carbonable",
"image": "ipfs://bafybeigsolf5qc6vtyxak5pyxupnj6iymylwz44vbz4avam5bp3in2exf4/level-1.png",
"name": "Level 1",
"attributes": [
{
"trait_type": "Role",
"value": "User"
},
{
"trait_type": "Level",
"value": 1
}
]
}
17 changes: 17 additions & 0 deletions assets/badges/json/3.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"description": "Carbonable badge",
"external_url": "https://carbonable.io/",
"youtube_url": "https://www.youtube.com/watch?v=5dZrROBmfKU&ab_channel=Carbonable",
"image": "ipfs://bafybeigsolf5qc6vtyxak5pyxupnj6iymylwz44vbz4avam5bp3in2exf4/level-2.png",
"name": "Level 2",
"attributes": [
{
"trait_type": "Role",
"value": "User"
},
{
"trait_type": "Level",
"value": 2
}
]
}
7 changes: 7 additions & 0 deletions assets/badges/json/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"name": "Carbonable Badges",
"description": "Carbonable badges.",
"image": "ipfs://bafybeigsolf5qc6vtyxak5pyxupnj6iymylwz44vbz4avam5bp3in2exf4/collection.png",
"external_link": "https://carbonable.io/",
"banner_image_url": "ipfs://bafybeigsolf5qc6vtyxak5pyxupnj6iymylwz44vbz4avam5bp3in2exf4/banner.png"
}
2 changes: 1 addition & 1 deletion lib/bal7hazar_contracts
54 changes: 54 additions & 0 deletions scripts/airdrop_badge.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#!/bin/bash

### CONSTANTS
SCRIPT_DIR=`readlink -f $0 | xargs dirname`
ROOT=`readlink -f $SCRIPT_DIR/..`
STARKNET_ACCOUNTS_FILE=$HOME/.starknet_accounts/starknet_open_zeppelin_accounts.json
PROTOSTAR_TOML_FILE=$ROOT/protostar.toml

### FUNCTIONS
. $SCRIPT_DIR/library.sh # Logging utilities

### RAW INPUTS
PROFILE="testnet"
BADGE_CONTRACT=0x00e3f53dd77369d98903828488de01d60a8e118cfc2e007d663aea6111da44ef
RECIPIENT_FILE=$ROOT/scripts/configs/recipients.txt
TOKEN_ID=0
AMOUNT=1

### SETTINGS
CONFIG_FILE=$ROOT/scripts/configs/$PROFILE.config
[ -f $CONFIG_FILE ] && source $CONFIG_FILE || exit_error "$CONFIG_FILE file not found"

[ -z $ADMIN_ADDRESS ] && ADMIN_ADDRESS=`get_account_address $ACCOUNT $STARKNET_ACCOUNTS_FILE`
[ -z $ADMIN_ADDRESS ] && exit_error "Unable to determine account address"

[[ -z $NETWORK && ! -z $PROFILE ]] && NETWORK=`get_network $PROFILE $PROTOSTAR_TOML_FILE`
[ -z $NETWORK ] && exit_error "Unable to determine network"

### PRE_CONDITIONS
check_wallet
check_starknet

### LAST CHECK
print Profile: $PROFILE
print Account alias: $ACCOUNT
print Admin address: $ADMIN_ADDRESS
print Network: $NETWORK
print Badge contract: $BADGE_CONTRACT
print Recipients: $RECIPIENT_FILE
print Token ID: $TOKEN_ID
print AMOUNT: $AMOUNT
ask "Are you OK to airdrop with those parameters" || return

### AIRDROP
token_id=$(felt_to_uint256 $TOKEN_ID)
amount=$(felt_to_uint256 $AMOUNT)
data_len=1
data=0
for to in $(cat $RECIPIENT_FILE); do
log_info "Mint $AMOUNT token (id=$TOKEN_ID) to $to"
send_transaction "starknet invoke --address $BADGE_CONTRACT --abi ./build/CarbonableBadge_abi.json --function mint --inputs $to $token_id $amount $data_len $data --network $NETWORK --account $ACCOUNT --wallet $WALLET" "$NETWORK" || exit_error
done

exit_success
4 changes: 4 additions & 0 deletions scripts/configs/recipients.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
0x062aabb23d64f4171b83c340f4312f714506f0e63a8b750c7fa02792067baf52
0x06308ece15a8fb6dacdda24e3963a0174d554807934609effff1cc5464d2cc0a
0x009D02BaA050b9E8f3eb98ff0fa1eDE8E1b20D65CEAE9F05E018B4d8Da3e4b7F
0x024ed6992a5ffad2c51499733811ecb1d31f84e9a9adeca516c362c67d0714ee
2 changes: 1 addition & 1 deletion scripts/configs/testnet.config
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ ACCOUNT=carbonable
WALLET=starkware.starknet.wallets.open_zeppelin.OpenZeppelinAccount

# ERC-1155 settings
ERC1155_URI="ipfs://bafybeignr4tutoraenal42bjlpn35yfiy5pe3acu7scx7hnsbwshp3dt7e/"
ERC1155_URI="ipfs://bafybeicmkhxgj6sdpdioak42yxcqnfhjjmiloirzn3yfrtjn2tazwq3754"
ERC1155_NAME="Carbonable ERC-1155 Test"

# ERC-721 settings
Expand Down
7 changes: 7 additions & 0 deletions src/badge/badge.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,13 @@ func uri{
return CarbonableBadge.uri(id);
}

@view
func contractURI{
syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, bitwise_ptr: BitwiseBuiltin*, range_check_ptr
}() -> (uri_len: felt, uri: felt*) {
return CarbonableBadge.contract_uri();
}

@view
func balanceOf{syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr}(
account: felt, id: Uint256
Expand Down
19 changes: 17 additions & 2 deletions src/badge/library.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,23 @@ namespace CarbonableBadge {
let (id_str) = StringCodec.felt_to_string(id.low);
let (ext_str) = StringCodec.ss_to_string('.json');

let (pre_str) = StringUtil.concat(uri_str, id_str);
let (str) = StringUtil.concat(pre_str, ext_str);
let (json_str) = StringUtil.concat(id_str, ext_str);
let (str) = StringUtil.path_join(uri_str, json_str);

return (str.len, str.data);
}

func contract_uri{
syscall_ptr: felt*,
pedersen_ptr: HashBuiltin*,
bitwise_ptr: BitwiseBuiltin*,
range_check_ptr,
}() -> (uri_len: felt, uri: felt*) {
alloc_locals;

let (uri_str) = StringCodec.read('uri');
let (json_str) = StringCodec.ss_to_string('metadata.json');
let (str) = StringUtil.path_join(uri_str, json_str);

return (str.len, str.data);
}
Expand Down
3 changes: 3 additions & 0 deletions src/interfaces/badge.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ namespace ICarbonableBadge {
func uri(id: Uint256) -> (uri_len: felt, uri: felt*) {
}

func contractURI() -> (uri_len: felt, uri: felt*) {
}

func name() -> (name: felt) {
}

Expand Down
12 changes: 12 additions & 0 deletions tests/integrations/badge/library.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,18 @@ namespace carbonable_badge_instance {
return (len, array);
}

func contract_uri{
syscall_ptr: felt*,
pedersen_ptr: HashBuiltin*,
bitwise_ptr: BitwiseBuiltin*,
range_check_ptr,
carbonable_badge: felt,
}() -> (uri_len: felt, uri: felt*) {
alloc_locals;
let (len, array) = ICarbonableBadge.contractURI(carbonable_badge);
return (len, array);
}

func owner{
syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr, carbonable_badge: felt
}() -> (owner: felt) {
Expand Down