CELAR문서 CELAR.NETWORK →
개발자 · CELAR 문서

ConfidentialERC20: 표준 Solidity로 만드는 암호화 토큰

Celar는 완전한 EVM 동등성을 갖추고 있어 표준 Solidity, 지갑, JSON-RPC, 도구가 수정 없이 동작합니다. 암호문 연산은 표준 라이브러리가 노출하는 프리컴파일을 통해 들어옵니다. 암호화된 정수(euint8euint64)와 불리언(ebool)을 컨트랙트는 32바이트 핸들로 다루고, 실제 암호문은 FHE 데이터 평면에 놓입니다.

기밀 전송

import {TFHE, euint64, ebool} from "celar/TFHE.sol";

contract ConfidentialVault {
  mapping(address => euint64) private bal;

  function transfer(address to, euint64 amt) external {
    ebool ok = TFHE.and(
      TFHE.le(amt, bal[msg.sender]),      // funds check
      TFHE.le(amt, TFHE.sub(MAX, bal[to])) // overflow guard
    );
    euint64 m = TFHE.select(ok, amt, ZERO);
    bal[msg.sender] = TFHE.sub(bal[msg.sender], m);
    bal[to]         = TFHE.add(bal[to], m);
    // no revert, no branch, no leakage
  }
}

규칙에 의해 분기가 없고, 구조에 의해 안전하다

암호화된 검사에 require 가 없다는 점에 주목하십시오. 이것이 바로 분기 없음 규칙입니다. 어떤 revert도 암호화된 데이터에 의존할 수 없습니다. 데이터에 의존하는 revert는 기밀 상태를 공개 오라클로 만들어 버리기 때문입니다. 비교 결과는 오직 select 로만 흘러갑니다. 전송은 해당 금액이나 암호화된 0을 옮기며, 어느 쪽이든 트랜잭션은 유효합니다. 이 규칙은 컴파일 시점에 강제되고 또한 배포 시 바이트코드 분석으로 재확인됩니다. 프라이버시 누출은 감사 지적사항이 아니라 빌드 오류입니다.

개발자가 얻는 것