셀레네 체인
셀레네 체인은 신디케이트의 프로그래밍 가능한 온체인 시퀀서의 라이브 데모입니다.
셀레네 체인은 자연 주기, 이 경우에는 달의 위상에 의해 통제되는 프로그래밍 가능한 온체인 시퀀서의 라이브 데모입니다. 트랜잭션 시퀀싱을 달의 주기에 고정함으로써, 셀레네는 수동 개입을 제거하고 자율적이면서도 의도적으로 독특한 시스템을 가능하게 합니다.
신디케이트의 인프라를 기반으로 구축된 셀레네는 시퀀싱 로직이 어떻게 표현력 있고, 시간 기반이며, 완전히 온체인으로 만들어질 수 있는지 보여주며, 권한 부여, 순서 지정 및 맞춤형 트랜잭션 규칙에 대한 새로운 가능성을 열어줍니다.

스크린샷: 셀레네 체인 데모 인터페이스, 달의 위상 기반 트랜잭션 프롬프트 표시.
작동 방식: 트랜잭션 라이프사이클
- 제출: 사용자가 셀레네 데모 인터페이스를 통해 트랜잭션을 제출합니다.
- 시퀀싱: 온체인 시퀀서 모듈이 현재 달의 위상을 결정하고 해당 규칙을 트랜잭션에 적용합니다.
- 검증: 트랜잭션이 활성 위상의 기준과 일치하면 시퀀싱되어 온체인에 포함됩니다. 그렇지 않으면 거부되고 기록됩니다.
- 피드백: 사용자는 성공 시 트랜잭션 해시 또는 거부 메시지와 같은 즉각적인 피드백을 받습니다. 모든 거부된 시도는 투명성과 분석을 위해 PostgreSQL 데이터베이스에 저장됩니다.
시퀀싱 모듈: 달의 위상 권한
신디케이트의 프로그래밍 가능한 시퀀서에서 모듈은 트랜잭션이 어떻게 선택되고, 정렬되며, 온체인에 포함되는지 정의하는 플러그형 구성 요소입니다. 셀레네 데모는 맞춤형 권한 중심 시퀀싱 모듈을 구현합니다. 모든 트랜잭션 포함 규칙은 시퀀서에 의해 온체인에서 정의되고 시행됩니다. 각 달의 위상은 고유한 권한 부여 규칙 세트를 활성화합니다. 예를 들어, 그믐달 기간에는 저가치 트랜잭션만 허용됩니다.
이것은 개발자가 Syndicate를 사용하여 프로토콜 계층에서 직접 시행되는 동적이고 단계 기반 트랜잭션 정책을 갖춘 표현력 있고 자율적인 인프라를 구축하는 방법을 보여줍니다.
달의 위상 계산 및 규칙
이 모듈은 타임스탬프에서 현재 달의 위상을 계산하여 8개의 규칙 세트 중 하나에 매핑합니다.
공식:
/// @notice Computes the phase index for a given timestamp
/// @param timestamp The timestamp to compute the phase index for
/// @return phaseIndex The phase index
function getPhaseIndex(uint256 timestamp) internal pure returns (uint8 phaseIndex) {
// Known new moon: Jan 6, 2000 at 18:14 UTC
uint256 synodicMonth = 2551443; // seconds in a synodic month (~29.5306 days)
uint256 newMoonReference = 947182440; // reference new moon timestamp
uint256 elapsed = timestamp - newMoonReference;
uint256 phaseTime = elapsed % synodicMonth;
// Calculate the phase from 0 to 29
return uint8((phaseTime * 30) / synodicMonth);
}그런 다음 phaseIndex를 getPhaseName 함수에 전달하여 달의 위상 이름을 반환합니다:
function getPhaseName(uint8 phase) internal pure returns (string memory name) {
if (phase == 0 || phase == 29) return "New Moon";
if (phase >= 1 && phase <= 6) return "Waxing Crescent";
if (phase == 7) return "First Quarter";
if (phase >= 8 && phase <= 13) return "Waxing Gibbous";
if (phase >= 14 && phase <= 15) return "Full Moon";
if (phase >= 16 && phase <= 21) return "Waning Gibbous";
if (phase == 22) return "Last Quarter";
if (phase >= 23 && phase <= 28) return "Waning Crescent";
}규칙 표:
| 달의 위상 | 규칙 설명 |
|---|---|
| 신월(New Moon) | 낮은 콜데이터 크기 선호 |
| 초승달(Waxing Crescent) | 허용된 계약에만 브로드캐스트 |
| 상현달(First Quarter) | 천사 숫자 기부 필요(예: 111, 333 등) |
| 차가는 만월(Waxing Gibbous) | waxingGibbous()에 대한 함수 호출만 허용 |
| 만월(Full Moon) | 토큰 상호작용만 허용(ERC20, ERC721, ERC1155) |
| 기우는 만월(Waning Gibbous) | 높은 가스 한도 필요(≥ 21k) |
| 하현달(Last Quarter) | 콜데이터/가스 한도 비율 ≥ 16 강제 |
| 그믐달(Waning Crescent) | 낮은 가치 트랜잭션만 허용(≤ 0.01 ETH) |
이러한 각 규칙은 MoonphasePermissionModule.sol에서 구현되고 시퀀싱 계층에서 시행됩니다.
데모 아키텍처 및 기술 스택
**셀레네 체인(Selene Chain)**은 달의 위상 로직이 온체인에서 어떻게 시행되고 현대적인 웹 애플리케이션에서 표현될 수 있는지 보여주는 모듈식, 확장 가능한 아키텍처로 구축되었습니다. 다음은 각 요소가 어떻게 연결되는지 보여줍니다:
-
시퀀서: 탈중앙화된 온체인 시퀀싱
-
시퀀싱 모듈: 모든 달의 위상 로직은 Solidity 모듈(
MoonphasePermissionModule.sol)을 통해 온체인에서 시행되며, 현재 위상에 따라 트랜잭션 유효성을 결정합니다. -
프론트엔드: Next.js, TypeScript, Tailwind CSS로 구축되어 사용자에게 대화형 프롬프트와 실시간 피드백을 제공합니다.
-
백엔드: 트랜잭션 로깅에는 PostgreSQL을, 데이터베이스 접근에는 Drizzle ORM을 사용합니다.
-
개발 및 테스트: 계약 개발 및 테스트에는 Foundry가 사용됩니다.
시작하기
Syndicate로 앱체인을 구축할 준비가 되셨나요?
- 코드베이스 탐색하기로 아키텍처를 이해하고 모듈을 확장하세요
- 온체인 시퀀싱 모듈 보기로 자신만의 앱체인을 위한 주문, 권한 및 경제적 메커니즘 커스터마이징을 시작하세요
- 지원이 필요하거나 실험 결과를 공유하려면 Syndicate 팀에 연락하세요!