Skip to content

Commit f6061df

Browse files
committed
add burn functionality
1 parent eb7e057 commit f6061df

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

src/interfaces/i_ticket_721.cairo

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ pub trait ITicket721<TContractState> {
66
fn initialize(ref self: TContractState, name: ByteArray, symbol: ByteArray, uri: ByteArray);
77
fn pause(ref self: TContractState);
88
fn unpause(ref self: TContractState);
9+
fn burn(ref self: TContractState, token_id: u256);
910
fn safe_mint(ref self: TContractState, recipient: ContractAddress);
1011
fn update_name(ref self: TContractState, new_name: ByteArray);
1112
fn update_symbol(ref self: TContractState, new_symbol: ByteArray);

src/tickets/ticket_721.cairo

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ pub mod Ticket721 {
44
//*//////////////////////////////////////////////////////////////////////////
55
// IMPORTS
66
//////////////////////////////////////////////////////////////////////////*//
7-
use starknet::{ContractAddress, ClassHash, storage::{StoragePointerWriteAccess},};
7+
use starknet::{ContractAddress, ClassHash, storage::{StoragePointerWriteAccess}, get_caller_address};
88
use openzeppelin::{
99
access::accesscontrol::{AccessControlComponent, DEFAULT_ADMIN_ROLE},
1010
introspection::src5::SRC5Component,
@@ -15,6 +15,7 @@ pub mod Ticket721 {
1515
},
1616
upgrades::{interface::IUpgradeable, UpgradeableComponent},
1717
};
18+
use core::num::traits::Zero;
1819

1920
//*//////////////////////////////////////////////////////////////////////////
2021
// COMPONENTS
@@ -149,6 +150,11 @@ pub mod Ticket721 {
149150
self.pausable.unpause();
150151
}
151152

153+
#[external(v0)]
154+
fn burn(ref self: ContractState, token_id: u256) {
155+
self.erc721.update(Zero::zero(), token_id, get_caller_address());
156+
}
157+
152158
#[external(v0)]
153159
fn safe_mint(ref self: ContractState, recipient: ContractAddress,) {
154160
self.accesscontrol.assert_only_role(DEFAULT_ADMIN_ROLE);

0 commit comments

Comments
 (0)