Guest User

Untitled

a guest
Oct 19th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. func nextBlock(lastBlock Block) Block {
  2.  
  3. blockIndex := lastBlock.index + 1
  4. blockTime := time.Now().String()
  5. blockData := "This is block " + strconv.Itoa(blockIndex)
  6. previousHash := lastBlock.previousHash
  7.  
  8. var sha = sha256.New()
  9. tryString := lastBlock.previousHash
  10. rand.Seed(time.Now().UnixNano())
  11. nonce := make([]byte, 4)
  12. rand.Read(nonce)
  13.  
  14. hashString := "00000" + lastBlock.previousHash[5:len(lastBlock.previousHash)]
  15.  
  16. for ((tryString[:5]) != hashString[:5]) {
  17.  
  18.  
  19. sha.Write([]byte(tryString))
  20. tryString = hex.EncodeToString(sha.Sum(nil))
  21. tryString = tryString + hex.EncodeToString(nonce)
  22. fmt.Printf(tryString)
  23. fmt.Printf("\n\n")
  24.  
  25. nonce[3]++
  26. }
  27.  
  28. blockString := strconv.Itoa(blockIndex) + blockTime + blockData + previousHash + tryString
  29. var sha2 = sha256.New()
  30. sha2.Write([]byte(blockString))
  31.  
  32. t, err := os.Create("height")
  33. check(err)
  34. n, err := t.WriteString(strconv.Itoa(blockIndex))
  35. fmt.Printf("Written height to file", n)
  36. t.Sync()
  37.  
  38. return Block {blockIndex, time.Now(), blockData, hex.EncodeToString(sha2.Sum(nil)) }
  39.  
  40. }
Add Comment
Please, Sign In to add comment