개발자 · CELAR 문서
ConfidentialERC20: 표준 Solidity로 만드는 암호화 토큰
Celar는 완전한 EVM 동등성을 갖추고 있어 표준 Solidity, 지갑, JSON-RPC, 도구가 수정 없이 동작합니다. 암호문 연산은 표준 라이브러리가 노출하는 프리컴파일을 통해 들어옵니다. 암호화된 정수(euint8…euint64)와 불리언(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을 옮기며, 어느 쪽이든 트랜잭션은 유효합니다. 이 규칙은 컴파일 시점에 강제되고 또한 배포 시 바이트코드 분석으로 재확인됩니다. 프라이버시 누출은 감사 지적사항이 아니라 빌드 오류입니다.
개발자가 얻는 것
balanceOf는 소유자만 복호화할 수 있는 핸들을 반환합니다(임계 재암호화).- 동일한 이벤트와 클래스별 고정 가스 등급 덕분에, 실행 결과나 실제 소모 가스가 암호화된 제어 흐름의 지문을 남기지 않습니다.
- 백엔드에 의존하지 않는 ABI: FHE 엔진은 노드 수준에서 교체 가능하며 배포된 컨트랙트에는 보이지 않습니다.
다음: $CELAR 토크노믹스 →