클레이튼을 이용해 블록체인 택시앱을 간단하게 작성해보고 있습니다.
프로그램을 작성하면서 이런 문제가 생길수도 있다고 생각이 들었는데요
예약 구조체{
bool cancelled; // 취소여부
uint start;
}
mapping (address => 예약) reservs;
function cancelReserv(){
assert(예약.start == 0)
cancelled = true;
}
function acceptReserv(){
assert(예약.cancelled == false)
reservs[예약자].start = block.timestamp;
}
손님이 cancelReserv를 통해 취소를 요청하고
기사님이 aceeptReserv를 통해 예약을 수락하는
과정이 동시에 일어났을때, assert가 정확하게 동작할수있을까요??
실제 코드는 assert뒤에 코드한줄말고 여러코드가 더 있기때문에 하나의 함수만 실행됬으면 좋겠는데요…
동시에 눌렀을때 요청의 우선순위 상관없이
단지 하나의 요청이 받아들여져서 반영되는지 궁금해요
시간 T1에 발생한 두 요청이
순서대로(동기적으로) 계약서에 업데이트되는지 궁금합니다
또, 블록 두개가 동시에 생성됬을때 두 블록이 검증받고 등록되는것에 순서가 있는지 궁금합니다
같은 시간 T1에 발생했어도요
글을 최대한 정리해서 써보긴했는데
블록체인관련 지식이 적어서 의미가 제대로 전달됬는지 모르겠습니다