Register a new DERO username
(s string)
| 1458 | |
| 1459 | // Register a new DERO username |
| 1460 | func registerUsername(s string) (storage uint64, err error) { |
| 1461 | // Check first if the name is taken |
| 1462 | valid, _ := checkUsername(s, -1) |
| 1463 | if valid != "" { |
| 1464 | logger.Errorf("[Username] Error: skipping registration - username exists.\n") |
| 1465 | err = errors.New("username already exists") |
| 1466 | return |
| 1467 | } |
| 1468 | |
| 1469 | scid := crypto.HashHexToHash("0000000000000000000000000000000000000000000000000000000000000001") |
| 1470 | |
| 1471 | var args = rpc.Arguments{} |
| 1472 | args = append(args, rpc.Argument{Name: "entrypoint", DataType: "S", Value: "Register"}) |
| 1473 | args = append(args, rpc.Argument{Name: "SC_ID", DataType: "H", Value: scid}) |
| 1474 | args = append(args, rpc.Argument{Name: "SC_ACTION", DataType: "U", Value: uint64(rpc.SC_CALL)}) |
| 1475 | args = append(args, rpc.Argument{Name: "name", DataType: "S", Value: s}) |
| 1476 | |
| 1477 | var p rpc.Transfer_Params |
| 1478 | var dest string |
| 1479 | |
| 1480 | switch session.Network { |
| 1481 | case NETWORK_MAINNET: |
| 1482 | dest = "dero1qykyta6ntpd27nl0yq4xtzaf4ls6p5e9pqu0k2x4x3pqq5xavjsdxqgny8270" |
| 1483 | case NETWORK_SIMULATOR: |
| 1484 | dest = "deto1qyvyeyzrcm2fzf6kyq7egkes2ufgny5xn77y6typhfx9s7w3mvyd5qqynr5hx" |
| 1485 | default: |
| 1486 | dest = "deto1qy0ehnqjpr0wxqnknyc66du2fsxyktppkr8m8e6jvplp954klfjz2qqdzcd8p" |
| 1487 | } |
| 1488 | p.Transfers = append(p.Transfers, rpc.Transfer{ |
| 1489 | Destination: dest, |
| 1490 | Amount: 0, |
| 1491 | Burn: 0, |
| 1492 | }) |
| 1493 | |
| 1494 | gp := rpc.GasEstimate_Params{SC_RPC: args, Ringsize: 2, Signer: engram.Disk.GetAddress().String(), Transfers: p.Transfers} |
| 1495 | |
| 1496 | storage, err = getGasEstimate(gp) |
| 1497 | if err != nil { |
| 1498 | logger.Errorf("[Username] Error estimating fees: %s\n", err) |
| 1499 | return |
| 1500 | } |
| 1501 | |
| 1502 | tx, err := engram.Disk.TransferPayload0(p.Transfers, 2, false, args, storage, false) |
| 1503 | if err != nil { |
| 1504 | logger.Errorf("[Username] Error while building transaction: %s\n", err) |
| 1505 | return |
| 1506 | } |
| 1507 | |
| 1508 | err = engram.Disk.SendTransaction(tx) |
| 1509 | if err != nil { |
| 1510 | logger.Errorf("[Username] Error while dispatching transaction: %s\n", err) |
| 1511 | return |
| 1512 | } |
| 1513 | |
| 1514 | logger.Printf("[Username] Username Registration TXID: %s\n", tx.GetHash().String()) |
| 1515 | |
| 1516 | return |
| 1517 | } |
no test coverage detected