ความท้าทายในการคำนวณใด ๆ สามารถเปลี่ยนเป็นหลักฐานการทำงานได้หรือไม่?


20

ปราศจากจุดหมายดูเหมือนของการทำเหมืองแร่ cryptocurrency ยกคำถามของทางเลือกที่มีประโยชน์ให้ดูที่คำถามเหล่านี้บนBitcoin , CST , มิสซูรี่ ฉันสงสัยว่ามีอัลกอริทึมที่สามารถแปลงความท้าทายการคำนวณใด ๆ ในทางปฏิบัติCC (ซึ่งวิธีการแก้ปัญหาสามารถตรวจสอบได้อย่างมีประสิทธิภาพ) ไปสู่ความท้าทายอีกเช่นนั้นΨ ( C )Ψ(C) (ซึ่งจะใช้สำหรับหลักฐานของการทำงาน) ดังกล่าวว่า

  1. ฟังก์ชันΨΨถูกสุ่มโดยใช้ลำดับสุ่ม (สาธารณะ) บางส่วนrR
  2. การแก้Ψ ( C )Ψ(C)คือมักจะเป็นเรื่องยากที่การแก้CC C
  3. หากการแก้ปัญหาxxพบสำหรับΨ ( C )Ψ(C)จากนั้นเป็นวิธีการแก้ปัญหาΨ - 1 ( x )Ψ1(x)สามารถคำนวณได้อย่างมีประสิทธิภาพสำหรับต้นฉบับท้าทายCC C
  4. รู้วิธีการแก้ปัญหาสำหรับCCไม่ได้ช่วยในการหาวิธีการแก้ปัญหาสำหรับΨ ( CΨ(C) )

4 '(อัปเดต) ตามที่โนอาห์ชี้ให้เห็นในความคิดเห็นเงื่อนไขก่อนหน้านี้ควรได้รับการเสริมสร้างความเข้มแข็งเพื่อกำหนดให้การประมวลผลล่วงหน้าCCไม่ควรให้ประโยชน์ใด ๆ ในการแก้ไขΨ ( CΨ(C))

สภาพล่าสุดนี้เป็นสิ่งจำเป็นเพื่อให้ไม่มีใครสามารถใส่ลงในตำแหน่งที่ได้เปรียบเพียงเพราะพวกเขารู้วิธีการแก้ปัญหาของC Cการใช้วิธีการนี้ผู้คนสามารถส่งปัญหาการคำนวณที่พวกเขาต้องการแก้ไขและผู้มีอำนาจส่วนกลางสามารถเลือกที่สมควรในการแก้ปัญหา (เช่นการค้นหาเอเลี่ยนกับการทำลายรหัสผ่าน) โปรดทราบว่าดูเหมือนจะไม่เป็นปัญหาหากปัญหาใช้เวลาถึงหนึ่งสัปดาห์ในการแก้ปัญหา (ฉันเดาว่ามนุษย์ต่างดาวเหล่านั้นไม่สามารถซ่อนตัวได้ดี) เพราะนี่อาจส่งผลให้ได้รับรางวัลมากขึ้นสำหรับการแก้ปัญหา อย่างไรก็ตามหัวข้อเหล่านี้ไม่เกี่ยวข้องกับการแก้ปัญหาเชิงทฤษฎีของฉัน แต่แน่นอนว่าฉันยินดีที่จะพูดคุยในข้อคิดเห็น / ในฟอรัม

วิธีการแก้ปัญหาที่เป็นไปได้ที่จะเป็นต่อไปนี้: ΨΨแผนที่CCเข้า( C , H S H R )(C,HASHr) , ที่อยู่, การแก้CCและอื่น ๆ ความท้าทายที่ยากคอมพิวเตอร์ หนึ่งปัญหากับเรื่องนี้ก็คือการรู้วิธีการแก้CCไม่แก้ให้Ψ ( C )Ψ(C)ค่อนข้างง่าย (วิธีที่ง่ายมากขึ้นอยู่กับความยากลำบากของH S H RHASHr ) ปัญหาก็คือว่าΨ ( C )Ψ(C)กลายเป็นเรื่องยากมากขึ้นกว่าCC


3
บางทีนี่อาจเกี่ยวข้องกัน: eprint.iacr.org/2017/203.pdf
Andreas Björklund

3
อะไรคือความแตกต่างระหว่าง "ความท้าทายในการคำนวณ" และ "ความท้าทายในการพิสูจน์การทำงาน"?
หรือเมียร์

2
แน่นอน แต่คำจำกัดความที่ชัดเจนของการพิสูจน์งานมักจะต้องพิจารณาความท้าทายหลายประการเนื่องจากคุณสมบัติหลักที่กำหนดว่าเป็นความสามารถในการไม่ตัดจำหน่าย นี่คือเหตุผลว่าทำไมทำงานเช่น eprint.iacr.org/2017/203.pdf เสร็จแล้ว - คุณต้องมีการรับประกันความสามารถในการลบล้างไม่ได้สำหรับแอปพลิเคชัน PoWs เกือบทั้งหมดโดยเฉพาะ cryptocurrencies ยังไงก็ตามคุณกำลังมองหาวิธีแก้ปัญหาที่พิสูจน์ได้ในที่สาธารณะ คุณต้องการโครงร่างที่มีประสิทธิภาพในทางปฏิบัติหรือคุณโอเคกับวิธีแก้ปัญหาเชิงทฤษฎีหรือไม่?
Geoffroy Couteau

5
@domotorp ทำไมคุณถึงคิดว่า eprint.iacr.org/2017/203.pdf ไม่เกี่ยวข้องกับคำถามของคุณ
Alon Rosen

5
แม้ว่ามันจะไม่ได้ช่วยลดปัญหาที่เลวร้ายที่สุดใน P แต่บทความก็ให้ประโยชน์กับ PoW จากปัญหามากมาย โดยเฉพาะอย่างยิ่งปัญหาใด ๆ ที่ลดทอนไปที่ Orthogonal Vectors (OV) รวมถึงปัญหากราฟทั้งหมดที่เป็นสถานะในตรรกะอันดับหนึ่ง นอกจากนี้ยังนำไปใช้กับปัญหา k-OV (คาดว่าจะต้องใช้เวลาประมาณ n ^ k) เช่นเดียวกับปัญหาอื่น ๆ จากโลกความซับซ้อนที่ละเอียด ดังนั้นแม้ว่าอาจไม่เป็นไปตามที่คุณคาดหวัง แต่ผลลัพธ์ก็ยังค่อนข้างกว้าง และสำหรับปัญหาที่ฉันกล่าวถึงข้างต้นคุณสมบัติ 1-4 นั้นเป็นที่พอใจแน่นอน
Alon Rosen

คำตอบ:


8

( หมายเหตุ : Andreas Björklundแนะนำวิธีแก้ปัญหาในความคิดเห็นที่ฉันเชื่อว่าดีกว่าที่อธิบายไว้ด้านล่างดูhttp://eprint.iacr.org/2017/203โดย Ball, Rosen, Sabin และ Vasudevan ในระยะสั้น พวกเขาให้หลักฐานการทำงานบนพื้นฐานของปัญหาเช่น Orthogonal Vectors ซึ่งความแข็งเป็นที่เข้าใจกันดีและปัญหามากมาย (เช่น k-SAT) สามารถลดลงได้อย่างมีประสิทธิภาพค่อนข้างตัวอย่าง PoW ของพวกเขาΨ ( C )นั้นยากพอ ๆ กับ Orthogonal case ที่แย่ที่สุด เวกเตอร์แม้ว่าอินสแตนซ์อินพุตCนั้นง่ายดังนั้นพวกเขาจึงหลีกเลี่ยงข้อเสียเปรียบหลักของการแก้ปัญหาที่อธิบายไว้ด้านล่างΨ(C)C

วิธีการแก้ปัญหาที่อธิบายไว้ด้านล่างอาจได้รับประโยชน์จากความเรียบง่าย --- มันสามารถอธิบายให้กับผู้ที่ไม่ใช่ผู้เชี่ยวชาญ --- แต่ดูเหมือนว่าฉันจะน่าสนใจน้อยลงในทางทฤษฎี)

วิธีการแก้ปัญหาที่เป็นไปได้ถ้ามีข้อสันนิษฐานว่า "อัลกอริธึมที่เร็วที่สุดสำหรับCคือการสุ่มแบบพื้นฐาน" (และถ้าเราจำลองฟังก์ชันแฮชการเข้ารหัสเป็นแบบพยากรณ์แบบสุ่ม) วิธีหนึ่งในการทำให้เป็นระเบียบแบบนี้คือการพูดแบบนั้นC

  1. CT F N PF PCTFNPFP (ไม่อย่างนั้นฉันคิดว่ามันไม่ใช่การท้าทายที่ถูกต้อง)
  2. อัลกอริทึมแบบสุ่มที่เร็วที่สุดสำหรับCทำงานในเวลาที่คาดหวังTCTบนอินสแตนซ์ทั่วไป และ
  3. มีฟังก์ชันที่คำนวณได้อย่างมีประสิทธิภาพfจาก{ 0 , 1 } kไปยังโดเมนของโซลูชันสำหรับCสำหรับk log 2 Tเช่นที่มีอยู่เสมอs { 0 , 1 } kกับf ( s )โซลูชันสำหรับCf{0,1}kCklog2Ts{0,1}kf(s)C .

ขอให้สังเกตว่าสมมติฐานที่ว่าk เข้าสู่ระบบ2 Tหมายความว่าการค้นหาของแรงเดรัจฉาน{ 0 , 1 } kเป็นหลักขั้นตอนวิธีการที่ดีที่สุดสำหรับC ดังนั้นนี่เป็นข้อสมมติฐานที่ค่อนข้างแข็งแกร่ง ในทางกลับกันถ้าCไม่พอใจคุณสมบัติเหล่านี้มันก็ยากที่จะจินตนาการว่าคุณพอใจทั้งเงื่อนไข (2) และ (4)klog2T{0,1}kCC

จากนั้นได้รับฟังก์ชันแฮชH : { 0 , 1 } *{ 0 , 1 } kซึ่งเราจำลองเป็น oracle สุ่มเรากำหนดΨ H ( C ; R )ดังต่อไปนี้ที่R { 0 , 1 } สำหรับบาง» kคือการป้อนข้อมูลแบบสุ่มไปยังΨ H เป้าหมายคือการส่งออกx { 0 , 1 } เช่นนั้นH:{0,1}{0,1}kΨH(C;r)r{0,1}kΨHx{0,1} f ( H ( r , x ) )เป็นวิธีการแก้ไปยังC กล่าวอีกนัยหนึ่ง ( r , x )ควรแฮชถึง "เหรียญสุ่มดี" สำหรับอัลกอริทึมด้านบนf(H(r,x))C(r,x)

มาดูกันว่าสิ่งนี้เป็นไปตามเงื่อนไขทั้งหมดของคุณ

  1. "ฟังก์ชั่นΨถูกสุ่มโดยใช้ลำดับสุ่ม (สาธารณะ) บางตัวr " ตรวจสอบ!Ψr
  2. "การแก้Ψ ( C )โดยทั่วไปนั้นยากพอ ๆ กับการแก้C " ขอให้สังเกตว่าที่เรียบง่ายแบบสุ่มอัลกอริทึมสำหรับΨ H ( C , R )วิ่งในเวลาที่คาดว่าจะมากที่สุด2 kบวกค่าใช้จ่ายพหุนามและสมมติฐาน2 kTเป็นหลักเวลาทำงานของอัลกอริทึมที่ดีที่สุดสำหรับCΨ(C)CΨH(C,r)2k2kTC C
  3. "หากพบโซลูชันxสำหรับΨ ( C )แสดงว่าโซลูชันΨ - 1 ( x )สามารถคำนวณได้อย่างมีประสิทธิภาพสำหรับความท้าทายดั้งเดิมC " สิ่งนี้สามารถทำได้โดยการคำนวณf ( H ( r , x ) )ซึ่งเป็นทางออกสำหรับCxΨ(C)Ψ1(x)Cf(H(r,x))Cโดยสมมติฐาน
  4. "รู้วิธีการแก้ปัญหาสำหรับCไม่ได้ช่วยในการหาวิธีการแก้ปัญหาสำหรับΨ ( C ) ." ตามคำนิยามการแก้Ψ H ( C ; R )ต้องมีการค้นพบxดังกล่าวว่าF ( H ( R , x ) )เป็นวิธีการแก้ไปยังC เนื่องจากเราสร้างแบบจำลองHเป็น oracle แบบสุ่มเราสามารถลดขอบเขตเวลาทำงานที่คาดหวังของอัลกอริทึมใด ๆ ที่สามารถแก้ปัญหานี้ได้ด้วยความซับซ้อนของแบบสอบถามที่เหมาะสมที่สุดของปัญหาแบบสอบถามที่HCΨ(C)ΨH(C;r)xf(H(r,x))CHH is given by a black box and we are asked to find a solution to the same problem. And, again because HH is a random oracle, the expected query complexity is just the inverse of the fraction of elements x{0,1}kx{0,1}k that are solutions (up to a constant factor). By assumption, the optimal expected running time of any algorithm for CC is T2kT2k, which implies that this fraction cannot be much larger than 2k2k. Since kk and r{0,1}r{0,1} is chosen uniformly at random, this is even true with preprocessing that is allowed to depend on HH and CC (but not rr), and in particular it is true even if we know a solution to CC in advance.

This is a very nice solution. The only place where I see a possibility of improvement is condition (2). For many problems in NPNP, there are algorithms in cncn time for some c<2c<2. It would be nice if something like this could be preserved, but I'm not sure if it can be done. Surely your method is superior already to the ones used currently for cryptocurrencies!
domotorp

In fact, maybe not even much needs to be changed in the blockchain. Just the community can agree that at some given time an xx needs to be appended to the blockchain whose hash solves whichever practical problem. In fact, maybe the standard blockchain can continue, and this could just be an independent, solo challenge. Possibly on the market such a solo instance will be worth more than traditional coins, just like Rogue One is better than sw7 or sw8.
domotorp

Glad you like it :). I just want to clarify that while my conditions on CC do imply that "brute-force search over some search space is essentially optimal," they do not imply that brute-force search over the original search space is essentially optimal. E.g., for SAT, this is not the same as requiring the fastest algorithm to run in 2n2n time.
Noah Stephens-Davidowitz

In case of composition -for example the computational problem admits a problem definition in which the computational problem can be composed of smaller problems, whose solution is easier, and there is a solution which is not based on composition, would non-amortizability account for this?
user3483902

I think another issue with this solution is what you've pointed out in a comment to my question, namely, that if someone can preprocess CC in an efficient way, they can get a serious advantage. I think this is quite a sensitive issue. Imagine that I submit a problem whose solution (in a standard format) can be checked in nn time, but I have a secret method to check it in nn time. This gives me quite an advantage for solving Ψ(C)Ψ(C).
domotorp

1

The following simple technique which I call the solution lottery technique (SLT) can be used in conjunction with other techniques (such as having multiple POW problems, the technique mentioned in Noah Stephens-Davidowitz's answer, etc) to help transform computational challenges into viable proof of work problems. The SLT helps ameliorate issues with cryptocurrency mining problems other than conditions 1-4.

Suppose that CC is a computational challenge of the form “find a suitable hash kk along with a string xx such that (k,x)D(k,x)D.”

Problem Ψ(C)Ψ(C) setup: Suppose that DD is a set, HH is a cryptographic hash function, and CC is some constant. Suppose furthermore that Data(k,x)Data(k,x) is a piece of information that is easy to obtain after one determines that (k,x)D(k,x)D but which cannot be obtained otherwise.

Problem Ψ(C)Ψ(C) objective: Find a pair (k,x)(k,x) such that kk is a suitable hash and where (k,x)D(k,x)D, and where H(k||x||Data(k,x))<CH(k||x||Data(k,x))<C.

Let us now investigate how problem Ψ(C)Ψ(C) satisfies requirements 1-4.

  1. We have to assume CC is already randomized for the SLT to satisfy this property.

2-3. Ψ(C)Ψ(C) will typically become more difficult than CC and this is a good thing. The difficulty of a proof-of-work problem needs to be finely tunable, but the original problem CC may or may not have a finely tunable level of difficulty (remember that the difficulty in mining Bitcoin is adjusted every two weeks). The difficulty of problem Ψ(C)Ψ(C) is equal to the difficulty of finding some suitable (k,x)D(k,x)D multiplied by 2nC2nC. Therefore, since the constant CC is finely tunable, the difficulty of Ψ(C)Ψ(C) is also finely tunable.

Even though the problem Ψ(C)Ψ(C) is more difficult than the original problem CC, almost all of the work for solving the problem Ψ(C)Ψ(C) will be spent on simply finding a pair (k,x)(k,x) with (k,x)D(k,x)D rather than computing hashes (one cannot compute whether H(k||x||Data(k,x))<CH(k||x||Data(k,x))<C or not until one has computed Data(k,x)Data(k,x) and one cannot compute Data(k,x)Data(k,x) unless one verifies that Data(k,x)DData(k,x)D).

Of course, the fact that Ψ(C)Ψ(C) is more difficult than CC presents some new concerns. For a useful problem, it is most likely the case that one would want to store the pairs (k,x)(k,x) where (k,x)D(k,x)D in some database. However, in order to receive the block reward, the miner must only reveal a pair (k,x)(k,x) where (k,x)D(k,x)D and H(k||x||Data(k,x))<CH(k||x||Data(k,x))<C instead of all the pairs (k,x)D(k,x)D regardless of whether H(k||x||Data(k,x))<CH(k||x||Data(k,x))<C or not. One possible solution to this problem is for the miners to simply reveal all pairs (k,x)(k,x) where (k,x)D(k,x)D out of courtesy. Miners will also have the ability to reject chains if the miners have not posted their fair share of pairs (k,x)D(k,x)D. Perhaps, one should count the number of pairs (k,x)D(k,x)D for the calculation as to who has the longest valid chain as well. If most of the miners post their solutions, then the process of solving Ψ(C)Ψ(C) will produce just as many solutions as the process of solving CC.

In the scenario where the miners post all of the pairs (k,x)D(k,x)D, Ψ(C)Ψ(C) would satisfy the spirit of conditions 2-3.

  1. Ψ(C)Ψ(C) may or may not satisfy condition 4 depending on the specific problem.

Other Advantages of this technique:

The SLT offers other advantages than conditions 1-4 which are desirable or necessary for a proof-of-work problem.

  1. Improving the security/efficiency balance: The SLT will help in the case that C may be too easy to solve or too difficult to verify. In general, Ψ(C) is much more difficult to solve than C, but Ψ(C) is about as easy to verify as C.

  2. Removal of a broken/insecure problem: The SLT could be used to algorithmically remove bad POW problems in a cryptocurrency with a backup POW-problem and multiple POW problems. Suppose that an entity finds a very quick algorithm for solving problem C. Then such a problem is no longer a suitable proof-of-work problem and it should be removed from the cryptocurrency. The cryptocurrency must therefore have an algorithm that removes C from the cryptocurrency whenever someone has posted an algorithm that solves problem C too quickly but which never removes problem C otherwise. Here is an outline of such a problem removal algorithm being used to remove a problem which we shall call Problem A.

a. Alice pays a large fee (the fee will cover the costs that the miners incur for verifying the algorithm) and then posts the algorithm which we shall call Algorithm K that breaks Problem A to the blockchain. If Algorithm K relies upon a large quantity of pre-computed data PC, then Alice posts the Merkle root of this pre-computed data PC.

b. Random instances of Problem A are produced by the Blockchain. Alice then posts the portions of the pre-computed data which are needed for Algorithm K to work correctly along with their Merkle branch in order to prove that the data actually came from PC. If Alice's algorithm fed with the pre-computed data PC quickly, then the problem is removed and Alice receives a reward for posting the algorithm that removes the problem from the blockchain.

This problem removal procedure is computationally expensive on the miners and validators. However, the SLT removes most of the computational difficulty of this technique so that it can be used if needed in a cryptocurrency (instances which this technique is used will probably be quite rare).

  1. Mining pools are more feasible: In cryptocurrencies, it is often very difficult to win the block reward. Since the block rewards are very difficult to win, miners often mine in things called mining pools in which the miners combine their resources in solving a problem and in which they share the block reward in proportion to the amount of “near misses” they have found. A possible issue for C is that it may be difficult to produce a qualitative notion of what constitutes as a “near miss” for the problem C and the algorithm for finding a near miss may be different from the algorithm for solving C. Since the pool miners will be looking for near misses, they may not be very efficient at solving C (and hence, few people will join mining pools). However, for Ψ(C), there is a clear cut notion of a near miss, namely, a near miss is a pair (k,x) where (k,x)D but where H(k||x||Data(k,x))C, and the algorithm for finding near misses for Ψ(C) will be the same as the algorithm for finding solutions to Ψ(C).

  2. Progress freeness: A proof-of-work problem P is said to be progress free if the amount of time it takes for an entity or group of entities to find next block on the blockchain follows the exponential distribution eλx where the constant λ is directly proportional to the amount of computational power that entity is using to solve Problem P. Progress freeness is required for cryptocurrency mining problems in order for the miners to receive a block reward in proportion to their mining power to achieve decentralization. The SLT certainly helps mining problems achieve progress freeness.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.