https://cexplorer.io/article/why-are-there-no-flash-loan-attacks-on-cardano
Ethereum 플랫폼의 많은 해킹에서는 플래시 대출을 사용했습니다. 공격자는 담보 없이 막대한 양의 자금을 빌릴 수 있으며, 이를 사용하여 수익을 창출한 다음 동일한 거래에서 대출금을 상환할 수 있습니다. 이번 글에서는 Cardano의 DeFi에서 이런 종류의 공격이 보이지 않는 이유를 설명하겠습니다. UTxO 모델의 장점 중 하나를 이해하게 될 것입니다.
플래시론의 원리
플래시론(Flash Loan)은 동일한 거래에서 빌리고 상환되는 대출입니다. 이는 자신의 돈을 위험에 빠뜨리지 않고도 잠재적으로 상당한 이익을 얻을 수 있는 한 가지 방법입니다.
우리 대부분은 일반 대출에 익숙합니다. 대출 기관은 차용자에게 돈을 빌려주고 결국 전액을 상환하게 됩니다. 일반적으로 대출금은 수개월 또는 수년에 걸쳐 꾸준히 상환되어야 합니다. 종종 대출 기관은 대출자가 대출금을 갚을 수 없는 경우에도 대출 기관이 돈을 돌려받을 수 있도록 하기 위해 대출자에게 담보를 제시하도록 요구합니다. 담보대출입니다.
플래시 대출은 담보가 필요하지 않기 때문에 무담보입니다. 이러한 담보 부족이 대출 기관이 돈을 돌려받지 못한다는 의미는 아닙니다. 담보를 제공하는 대신 차용인은 즉시 돈을 갚아야 합니다. 이는 스마트 계약을 통해 보장될 수 있습니다.
플래시 대출은 즉각적입니다. 플래시 대출은 이더리움 거래의 원자성을 활용하여 거래 시간이 블록 시간을 초과하지 않는 한 사용자가 단일 거래에서 여러 작업을 수행할 수 있도록 해줍니다.
이러한 원자성 개념은 플래시 대출의 기능에 매우 중요합니다. 플래시 대출을 위한 스마트 계약에는 일반적으로 단일 거래 내에서 자금 차용, 일부 작업(예: 차익거래 또는 청산) 수행 및 대출금 상환이 포함됩니다. 거래가 끝날 때까지 대출금이 상환되지 않으면 전체 거래가 취소되어 마치 대출이 발생하지 않은 것과 같습니다. 이는 대출이 담보가 없더라도 대출 기관이 자금을 잃지 않도록 보장합니다.
즉, 원자성은 트랜잭션의 전부 아니면 전무 특성을 보장합니다.
예를 들어 설명하는 것이 가장 좋습니다. 대출 프로토콜(A), 차용자(B), 대상 프로토콜 C의 세 당사자가 관련되어 있다고 가정해 보겠습니다. 이 세 가지 작업은 대출, 작업 및 상환이라는 단일 트랜잭션에서 발생합니다.
- 차용: 차용자(B)는 대출 프로토콜(A)에서 자금을 빌려 거래를 시작합니다. 그러면 A의 잔액이 차감되고 B의 잔액이 입금됩니다.
- 조치: 차용자(B)는 이러한 빌린 자금을 사용하여 다른 프로토콜 C와 상호 작용합니다. 이는 차익 거래, 청산 또는 이익을 얻을 수 있는 기타 작업을 위한 것일 수 있습니다. 그러면 B의 잔액이 차감되고 C의 잔액이 입금됩니다.
- 상환: 마지막으로 차용인(B)은 대출 프로토콜(A)에 수수료나 이자를 더해 대출금을 상환합니다. 그러면 B의 잔액이 차감되고 A의 잔액이 입금됩니다.
거래가 종료되면 자금이 차입되지 않은 것으로 나타납니다.
Ethereum의 스마트 계약은 광범위한 작업을 수행하고 다른 계약과 상호 작용할 수 있는 복잡한 자율 프로그램일 수 있습니다. 이를 통해 단일 거래 내에서 여러 스마트 계약 간의 복잡한 상호 작용이 가능하며, 이는 플래시 대출 실행의 핵심 요구 사항입니다. 또한 플래시 대출 거래에는 여러 잔액이 관련되어 있습니다. 각 잔액은 단일 거래에서 여러 번 차변 및 대변에 기입될 수 있습니다.
이러한 개념 중 다수는 Plutus 스크립트 및 UTxO 모델의 단순성과 근본적으로 다릅니다. 카르다노에 대한 플래시론 공격이 아직까지 나오지 않은 이유도 바로 여기에 있다.
Cardano에 플래시 대출 공격이 없는 이유는 무엇입니까
Cardano의 유효성 검사기 스크립트와 Ethereum의 스마트 계약의 목적과 기능은 다르며 이는 플래시 대출 구현에 영향을 미칩니다.
Cardano의 유효성 검사기 스크립트는 UTxO를 사용할 수 있는지 여부를 결정하는 데 사용됩니다. 특정 조건이 충족되는지 확인하여 이를 수행합니다. 조건이 충족되지 않으면 거래가 검증되지 않으며 UTXO는 사용되지 않은 상태로 유지됩니다.
Cardano의 보안이 강화되는 또 다른 이유 중 하나는 UTxO 모델입니다.
각 UTxO는 주변 환경과 독립적인 별도의 개체입니다. UTxO 모델에는 Ethereum에서 사용하는 계정 기반 모델과 달리 잔액 개념이 없습니다.
하나 이상의 UTxO는 한 번만 완전히 사용할 수 있는 거래의 입력이 될 수 있습니다. 새로운 출력 UTxO는 입력 UTxO에서 생성됩니다.
Cardano 트랜잭션은 입력 UTxO를 소비하고 출력 UTxO를 생성하는 간단한 기능으로 볼 수 있습니다. 트랜잭션에 들어가는 UTxO는 변경할 수 없으며 독점 액세스가 보장됩니다. 트랜잭션 내에서 모든 입력 UTxO의 값이 모든 출력 UTxO의 값과 동일하다는 것이 보장됩니다(이는 플래시 대출을 구현하는 스마트 계약의 조건이기도 합니다).
이더리움에서 트랜잭션은 상태 저장되어 있어 시스템 상태를 변경할 수 있습니다. 이는 단일 거래 내에서 여러 스마트 계약 간의 복잡한 상호 작용에 필요한 전제 조건이며, 이는 플래시 대출 실행을 위한 핵심 요구 사항입니다.
UTxO 모델은 더 상태 비저장적입니다. 트랜잭션 유효성 검사 중에 스크립트는 입력 UTxO, 트랜잭션 컨텍스트, Datum 및 Redeemer에만 액세스할 수 있습니다. 예를 들어 스크립트에는 시스템의 다른 UTxO와 상호 작용하는 기능이 없습니다.
Cardano와 Ethereum의 주요 차이점은 Plutus 스크립트 검증 중에 UTxO를 다른 주소로 여러 번 이동할 수 없다는 것입니다. 게다가 카르다노는 이더리움과 달리 단일 거래에서 스마트 계약 연결을 지원하지 않습니다. 일련의 거래를 통해 연결될 수 있습니다.
Cardano는 트랜잭션 내의 작업을 동시에 처리합니다. 단일 Cardano 거래는 연속적으로 발생하는 활동이 아닌 동시에 발생하는 활동을 나타냅니다. 이는 단일 거래 내에서 자금을 빌리고 상환하는 Ethereum의 전통적인 플래시 대출 개념이 이러한 제약으로 인해 Cardano로 직접 변환되지 않음을 의미합니다.
자금 차입, 자금 사용, 자금 상환 활동을 위해 여러 거래를 사용해야 하기 때문에 Cardano에서는 플래시 대출을 생성할 수 없습니다. Cardano는 의도적으로 사용자가 플래시 대출을 생성하는 것을 허용하지 않습니다.
어떻게든 Cardano에서 플래시 대출을 생성하는 것이 가능할까요?
유효성 검사기 스크립트의 논리는 다음과 같아야 합니다. 이 UTxO가 동일한 스크립트 주소로 다시 소비되는 조건 하에서 소비되도록 허용합니다. 그러나 이것은 말이 되지 않습니다. UTxO는 거래 내에서 일시적으로 빌릴 수 없습니다. 상대방은 UTxO를 사용할 수 없습니다.
결론
이 기사에서는 플래시 대출이 공격에 자주 사용되기 때문에 부정적으로 이야기합니다. 플래시 대출은 필요한 기술과 지식을 갖춘 트레이더에게 강력한 도구라고 해도 과언이 아닙니다. 이더리움에서도 마찬가지입니다. 일부 사용 사례의 경우 개발자가 한 번의 트랜잭션으로 스마트 계약을 연결할 수 있다는 것이 유리합니다.
SC 플랫폼은 도구일 뿐이며 유용한 금융 서비스를 구축하는 데 사용될 수도 있고 해커에게 악용될 수도 있습니다. 전체 업계의 목표는 안정적이고 안전한 서비스를 만들 수 있는 플랫폼을 만드는 것입니다. Cardano는 설계상 안전하지만 일부는 Ethereum에 비해 구현하기가 더 힘들고 복잡합니다. 항상 올바른 균형을 찾는 것이 중요합니다.