누군가가 여러 문장을 입력하면 "복잡한"계약을 구축하기 위해 해당 구조/문장을 찾습니다. 기고자들은 새로운 구조의 채굴 과정을 통해 Iolite 토큰 보상을 받게됩니다.
iolite를 사용하는 장점은 스마트 계약 전문가가 무작위 숫자 생성과 같은 문제를 해결할 수 있다는 것입니다. iolite.io에서 자세한 정보를 찾을 수 있습니다.
결론 <code class="language-solidity">function random() private view returns (uint8) {
return uint8(uint256(keccak256(block.timestamp, block.difficulty))%251);
}</code>
보시다시피, 진정한 임의의 입력을 생성하는 것은 쉽지 않습니다. 무작위성의 원천으로 , 및 에 의존하지 마십시오. 좋은 솔루션에는 여러 의사 랜덤 데이터 입력을 결합하고 Oracles 또는 Smart 계약을 사용하여보다 신뢰할 수 있도록하는 것이 포함됩니다. 스마트 계약에 입력 된 데이터를 아무도 변조 할 수 없도록 100% 확신해야합니다.
임의의 숫자 생성 로직을 구현하기 전에 조심하고 두 번 생각하십시오. 견고성에서 임의의 숫자 생성에 대한 FAQ (FAQ)
견고성에서 임의의 숫자를 생성하기가 어려운 이유는 무엇입니까?
Solidity (이더 리움 스마트 계약을 작성하는 데 사용되는 프로그래밍 언어)에는 임의의 숫자를 생성하기위한 내장 기능이 없습니다. 이는 블록 체인 (이더 리움의 기본 기술)이 본질적으로 결정적이기 때문입니다. 이것은 입력 세트가 주어지면 출력이 항상 동일하다는 것을 의미합니다. 이 확실성은 블록 체인의 무결성과 보안을 유지하는 데 중요합니다. 그러나 무작위성의 개념이 본질적으로 비 결정적이기 때문에 실제 랜덤 숫자를 생성하는 것은 도전에 도전합니다.
견고성에서 랜덤 숫자를 생성하는 일반적인 방법은 무엇입니까?
개발자는 여러 가지 방법을 사용하여 유사 랜덤 숫자를 견고하게 생성합니다. 일반적인 방법은 현재 블록 타임 스탬프 및 블록 난이도와 같이 입력이 예측하기 어려운 Keccak256 해시 함수를 사용하는 것입니다. 또 다른 접근법은 오프 체인 소스에서 임의의 숫자를 제공하는 Oracle 서비스를 사용하는 것입니다. 그러나 각 접근 방식에는 자체 한계와 잠재적 보안 위험이 있습니다.
랜덤 숫자를 생성하기 위해 keccak256 해시 함수를 사용하는 위험은 얼마입니까?
keccak256 해시 함수는 의사 랜덤 숫자를 생성하는 데 사용될 수 있지만 잠재적 인 보안 위험이 있습니다. 현재 블록 타임 스탬프 및 블록 난이도와 같은 해시 함수에 대한 입력은 블록 체인에서 공개적으로 사용할 수 있으므로 악성 광부는 이러한 값을 조작하여 임의의 숫자로 생성 된 출력에 영향을 줄 수 있습니다.
Oracle Service를 사용하여 견고성에서 임의의 숫자를 생성하는 방법은 무엇입니까?
원래 서비스는 오프 체인 소스에서 임의의 숫자를 제공 할 수 있습니다. 이 서비스는 블록 체인과 외부 세계 사이의 다리 역할을하므로 스마트 계약이 블록 체인 자체에 사용할 수없는 데이터와 상호 작용할 수 있습니다. 그러나 Oracle Services를 사용하면 스마트 계약이 정확하고 편견없는 임의의 숫자를 제공하기 위해 Oracles에 의존해야하기 때문에 신뢰 수준이 소개됩니다.
약속-임의의 숫자를 생성 할 때 체계를 드러내는 역할은 무엇입니까?
약속-반박 체계는 분산되고 안전한 방식으로 임의의 숫자를 생성하는 방법입니다. 약속-반박 체계에서 참가자는 먼저 비밀 번호를 커밋 한 다음 모든 비밀 수가 동시에 드러나고 이러한 비밀에 따라 임의의 수가 생성됩니다. 이 접근법은 단일 참가자가 임의의 숫자로 생성 된 출력에 영향을 미치지 못하게합니다.
스마트 계약에서 실제 랜덤 숫자를 생성하는 것이 중요한 이유는 무엇입니까?
실제 랜덤 숫자는 우연의 게임, 복권 및 임의성이 필요한 기타 응용 프로그램에 사용되는 것과 같은 많은 유형의 스마트 계약에 중요합니다. 이 계약에 사용 된 랜덤 숫자를 예측하거나 영향을 줄 수 있다면, 불공정 한 결과로 이어질 수 있으며 악의적 인 행위자가 계약을 이용할 수 있습니다.
블록 하쉬 함수를 사용하여 견고성에서 랜덤 숫자를 생성 할 수 있습니까?
견고성의 블록 하쉬 함수는 의사 랜덤 숫자를 생성하는 데 사용될 수 있습니다. 이 함수는 주어진 블록 번호의 해시 값을 반환하며, 이는 예측할 수 없으며 각 블록마다 다릅니다. 그러나이 방법에는 한계가 있습니다. 예를 들어, Blockhash 함수는 가장 최근의 256 블록에서만 작동하며, 채굴 전에 미래 블록의 블록 하쉬를 알 수 없습니다.
임의의 숫자를 생성하기 위해 현재 블록 타임 스탬프를 사용하는 제한 사항은 무엇입니까?
임의의 숫자를 생성하기 위해 현재 블록 타임 스탬프를 입력으로 사용하는 데 큰 제한이 있습니다. 광부는 광산 블록의 타임 스탬프에 약간의 영향을 미칩니다. 즉, 타임 스탬프를 조작하여 임의의 숫자로 생성 된 출력에 영향을 줄 수 있습니다.
Randao Beacon을 사용하여 난수를 생성하는 방법은 무엇입니까?
randao (랜덤 숫자 dao) 비콘은 분산되고 투명한 방법으로 랜덤 숫자를 생성하는 방법입니다. Randao Beacon Promise Secret Numbers의 참가자는 공개되고 결합되어 임의의 숫자를 생성합니다. 이 접근법은 단일 참가자가 임의의 숫자로 생성 된 출력에 영향을 줄 수 없도록 설계되었습니다.
견고성에서 임의의 숫자를 생성하기위한 다가오는 개선 또는 제안이 있습니까?
견고성 및 기타 블록 체인 플랫폼에서 임의의 수 생성 개선에 대한 연구 및 제안이 진행 중입니다. 예를 들어, 이더 리움 2.0 (다가오는 이더 리움 네트워크로의 업그레이드)에는 내장 임의의 숫자 생성기가 포함될 것으로 예상됩니다. 그러나 이러한 개선이 구현되기 전에 개발자는 기존 접근 방식과 고유 한 제한 및 잠재적 보안 위험을 계속 사용해야합니다.