보안
Sui는 asset owners에게 높은 보안 보장을 제공하도록 설계되었다. coins와 tokens를 포함한 Sui의 자산은 objects의 타입이며, smart contract의 사전 정의된 로직에 따라 달리 정의되지 않는 한 소유자만 사용할 수 있다. 모든 smart contract는 audit할 수 있으며, 일부 validators가 프로토콜을 올바르게 따르지 않더라도 네트워크는 이를 올바르게 처리할 수 있다. 이를 fault tolerance 라고 한다.
Sui의 보안 기능은 objects에 대해 특정 속성을 보장한다:
-
object의 소유자만이 그 object에 대해 동작하는 transaction을 승인할 수 있다. 승인은 object owner만 아는 private signature key를 사용해 수행된다.
-
누구나 shared objects 또는 immutable objects에서 동작할 수 있지만, smart contract가 추가 access control logic을 구현할 수 있다.
-
Transactions는 object type을 정의한 smart contract creator가 설정한 사전 정의된 규칙에 따라 objects에서 동작한다.
-
transaction이 final되면, 즉 그것이 동작하는 objects의 변경이나 새로 생성된 objects인 effects가 지속된다. 그 결과 objects는 이후 처리에 사용할 수 있다.
-
Sui의 모든 작업은 모든 objects가 올바르게 처리되었는지 확인하기 위해 audit할 수 있다. 이는 Sui의 모든 작업이 공개라는 뜻이며, 개인 정보를 보호하기 위해 여러 주소를 사용하고 싶을 수 있음을 의미한다.
Security architecture
Sui 네트워크는 set of validators에 의해 운영되며, 이들은 트랜잭션을 처리한다. 이들은 네트워크에 제출되고 처리된 어떤 transactions가 유효하고 consensus를 통해 final되어야 하는지에 대해 합의한다.
Consensus는 Byzantine fault tolerant broadcast를 사용하여 결함이 있는 validators의 일부를 허용한다. 모든 validators의 2/3를 초과하는 비율이 올바르게 운영되면 Sui는 모든 보안 속성을 유지한다. 그러나 이 수가 2/3보다 커지더라도 여러 audit 속성은 유지된다.
Addresses and ownership
Sui transaction은 transaction 안의 모든 objects의 소유자가 자신의 private signature key로 디지털 서명할 때만 유효하다. 그 결과 일부 validators에 결함이 있더라도 어떤 다른 주체도 사용자의 owned assets를 들키지 않고 다룰 수 없다.
private signature key는 사용자에게 objects와 tokens를 보내는 데 사용되거나 smart contracts가 custom access control logic을 정의할 수 있게 하는 Sui 네트워크의 public address에 대응한다. signature key는 비공개로 유지하고 다른 누구와도 공유하지 마라.
사용자는 편의 또는 개인 정보 보호를 위해 여러 signature keys에 대응하는 하나 이상의 addresses를 가질 수 있다. address 는 어떤 사전 등록도 필요하지 않다. 잘못된 address로 objects를 보내면 되돌릴 수 없는 결과를 초래할 수 있으므로, transfers의 수신자 address 또는 다른 작업에 관련된 당사자를 주의 깊게 확인해야 한다.
Smart contracts define objects and their logic
모든 objects는 Sui smart contract 안에서 정의된 타입을 가진다. Sui는 SUI native token을 관리하는 데 사용되는 것과 같은 몇 가지 system contracts를 제공한다. 누구나 custom smart contracts를 작성하고 제출할 수도 있다. object에 대한 transaction은 해당 object를 정의한 smart contract에 정의된 operations만 호출할 수 있으며 contract의 로직에 의해 제한된다.
자신의 objects를 다루는 transactions가 신뢰하는 smart contracts, 즉 자신 또는 신뢰하는 다른 사람이 audit했고 그 로직을 이해하는 contracts를 사용하도록 해야 한다. Sui smart contracts는 third parties가 이를 audit할 수 있게 하고 수정을 방지하여 보안 보장을 높이기 위해 immutable objects로 정의된다.
Move smart contract language는 audit과 verification을 쉽게 할 수 있도록 설계되었다. Move 개념에 관심이 있을 수 있다.
Shared objects는 여러 users가 자신의 owned objects 일부와 하나 이상의 shared objects를 포함하는 transactions를 통해 해당 objects에서 동작할 수 있게 한다. 이러한 shared objects는 shared object 타입을 정의한 smart contract에 따라 서로 다른 users 사이를 안전하게 중재하는 protocols를 구현하는 데 사용되는 데이터와 로직을 나타낸다. 그러나 smart contract는 서로 다른 addresses가 shared objects를 어떻게 사용할 수 있는지에 대해 추가 제한을 정의할 수 있다.
Transaction finality
모든 validators에게 제출된 유효한 transaction은 certified되어야 하고, final되기 전에 그 certificate 역시 모든 validators에게 제출되어야 한다. validators의 2/3가 transaction을 final해야만 그것이 네트워크의 영구 이력에 추가되고 그 결과를 다른 transactions가 사용할 수 있다. 이 과정은 결함이 있는 validators가 올바른 validators에게 잘못된 상태를 납득시킬 수 없다는 의미의 safety와, 결함이 있는 validators가 transaction 처리를 방해할 수 없다는 의미의 liveness를 보장한다.
모든 transactions에는 네트워크 처리 비용을 충당하는 데 필요한 object 타입인 gas 비용이 든다. 유효한 transaction은 성공적인 실행 또는 abort된 실행으로 이어질 수 있다. 실행은 object를 정의하는 smart contract 안의 조건 때문에 abort될 수도 있고 실행 비용을 지불할 충분한 gas가 부족해서 abort될 수도 있다.
성공한 경우 작업의 effects는 final된다. 그렇지 않으면 transaction 안의 objects 상태는 변경되지 않는다. 그러나 시스템 전체에 대한 denial-of-service attacks를 완화하기 위해 일부 gas는 항상 청구된다.
user client는 transaction과 그 certificate를 직접 제출할 수도 있고 transaction을 제출하고 validators와 상호작용하기 위해 third-party services에 의존할 수도 있다. 이러한 third parties는 private signature keys가 필요하지 않으며 사용자를 대신해 transactions를 위조할 수 없다. 이들은 transaction의 finality와 effects를 증명하는 validators의 signatures 집합을 통해 transaction이 final되었음을 user client에 확신시킬 수 있다. 그 시점 이후에는 transaction 결과가 온체인에 지속된다는 것을 확신할 수 있다.
Auditing and privacy
각 validator가 저장한 모든 objects와 그 objects로 이어진 historical record of transactions를 읽을 수 있다. Validators는 object 상태에 기여한 전체 transaction history에 대한 cryptographic evidence를 제공한다. User clients는 이러한 evidence history를 요청하고 검증하여 모든 작업이 올바른지 확인하고 validators 간의 collective agreement 결과를 검증할 수 있다. 전체 복제본을 운영하고 하나 이상의 validators 상태를 mirror하는 services는 이러한 audits를 일상적으로 수행한다.
Sui의 public auditability는 Sui 안의 모든 transactions와 assets가 공개적으로 보인다는 뜻이다. 개인 정보를 의식한다면 어느 정도의 pseudonymity를 위해 여러 addresses를 사용할 수 있고, third-party custodial 또는 non-custodial services를 사용할 수도 있다. 추가적인 암호학적 privacy protections를 갖춘 특정 smart contracts도 third parties에 의해 제공될 수 있다.
Censorship resistance and openness
Sui는 validators 집합을 주기적으로 결정하기 위해 delegated proof-of-stake를 사용한다. SUI tokens는 각 epoch에서 lock되고 위임되어 다음 epoch의 validators committee를 결정한다. 최소 amount 이상의 delegated stake를 가진 누구나 operate a Sui validator.
Validators는 gas fee 수입을 통해 rewards를 자신들을 validators로 지원하기 위해 stake their Sui users에게 제공한다. 신뢰성이 낮은 validators와, 그들에게 stake를 위임한 users는 더 낮은 보상을 받을 수 있다. User stake는 몰수될 수 없다.
이 메커니즘은 validators가 Sui users에게 책임을 지도록 보장하며, 유효한 transactions를 검열하려는 시도를 포함하여 신뢰성 부족이나 잘못된 행동의 첫 징후에서 교체될 수 있게 한다. validators 선택을 통해 Sui users는 네트워크의 미래 진화에 대해 의미 있는 발언권을 가진다.